标签:
以下内容为转载:
A:https://dotblogs.com.tw/asdtey/2009/09/27/10793
B:http://www.gitshah.com/2014/08/how-to-add-nolock-hint-to.html
1,方法一 使用 TransactionScope
2, 使用 ObjectContext.Connection.BeginTransaction
using (TestEntities te = new TestEntities()) {
////方法二 ////此方法會修改所有操作的交易層級 te.Connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
var users = te.User.Select(a => a).ToList();
}
3,重写 DbCommandInterceptor
public class NoLockInterceptor : DbCommandInterceptor
{
private static readonly Regex _tableAliasRegex =
new Regex(@"(?<tablealias>AS \[Extent\d+\](?! WITH \(NOLOCK\)))",
RegexOptions.Multiline | RegexOptions.IgnoreCase);
[ThreadStatic]
public static bool ApplyNoLock;
public override void ScalarExecuting(DbCommand command,
DbCommandInterceptionContext<object> interceptionContext)
{
if (ApplyNoLock)
{
command.CommandText =
_tableAliasRegex.Replace(command.CommandText,
"${tableAlias} WITH (NOLOCK)");
}
}
public override void ReaderExecuting(DbCommand command,
DbCommandInterceptionContext<dbdatareader> interceptionContext)
{
if (ApplyNoLock)
{
command.CommandText =
_tableAliasRegex.Replace(command.CommandText,
"${tableAlias} WITH (NOLOCK)");
}
}
}
3.1
NoLockInterceptor.ApplyNoLock = true;
3.2
DbInterception.Add(new NoLockInterceptor());
标签:
原文地址:http://www.cnblogs.com/zbw911/p/5605996.html