【发布时间】:2015-08-08 22:55:40
【问题描述】:
为了处理 SQL 超时,我尝试使用 SqlAzureExecutionStrategy (https://msdn.microsoft.com/en-us/data/dn456835.aspx)
我遇到的问题是它阻止了“用户启动的事务”,这似乎是在 EF(http://www.hanselman.com/blog/GettingLINQToSQLAndLINQToEntitiesToUseNOLOCK.aspx、NOLOCK with Linq to SQL)中实现“with (nolock)”的推荐方法。
示例代码
public AspnetUser GetAspnetUserByUserName(string userName)
{
using (var tx = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }))
{
return context.AspnetUsers.Where(x => x.UserName == userName).FirstOrDefault();
}
}
抛出错误
配置的执行策略“SqlAzureExecutionStrategy”不支持用户发起的事务。有关更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=309381。
我已经看到了关于在每次调用的基础上关闭 SqlAzureExecutionStrategy 的答案,但是如果我的所有读取都忽略了该策略,那将违背使用它的目的。可以同时拥有“NoLock”和 SqlAzureExecutionStrategy
【问题讨论】:
标签: linq entity-framework azure entity-framework-6 azure-sql-database