Wcf TransactionScopeAsyncFlowOption和隔离级别?
我在WCF服务中使用Entity Framework 6.1,并希望使用读取未提交隔离级别包围我的SELECT查询,因为其他批处理更新将插入到我正在读取的表中,并且不希望在对表执行读取时锁定这些批处理更新。这基本上是用NOLOCK模拟SELECT 该代码也以异步方式使用。因此,我不能简单地使用TransacationScope。请注意,我也在使用.NET4.5.1框架Wcf TransactionScopeAsyncFlowOption和隔离级别?,wcf,entity-framework,c#-5.0,isolation-level,asynchronous-wcf-call,Wcf,Entity Framework,C# 5.0,Isolation Level,Asynchronous Wcf Call,我在WCF服务中使用Entity Framework 6.1,并希望使用读取未提交隔离级别包围我的SELECT查询,因为其他批处理更新将插入到我正在读取的表中,并且不希望在对表执行读取时锁定这些批处理更新。这基本上是用NOLOCK模拟SELECT 该代码也以异步方式使用。因此,我不能简单地使用TransacationScope。请注意,我也在使用.NET4.5.1框架 我可以将TransactionScope上的隔离级别设置为ReadUncommitted,但TransactionScope选项
我可以将TransactionScope上的隔离级别设置为ReadUncommitted,但TransactionScope选项的默认值为ReadCommitted。我看不到任何改变隔离级别的方法 有没有办法改变隔离级别?如果我不能设置隔离级别,我的查询是否可以在上述情况下运行
实际上,如果我不能将隔离级别设置为“NOLOCK”,我甚至不需要包含TransactionScopeAsyncFlowOption。使用构造函数选项,将TransactionScopeAsyncFlowOption指定为第三个参数,而不是第一个参数:
using (var scope = new TransactionScope(
TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted },
TransactionScopeAsyncFlowOption.Enabled))
{
}
“我可以将TransactionScope上的隔离级别设置为ReadUncommitted,但TransactionScopeOption的默认值为ReadCommitted。我看不到任何更改隔离级别的方法。”这是一个矛盾。你说你可以设定水平,但不知为什么你不能。为什么?我只能使用TransactionScope设置隔离级别,但不能使用TransactionScope AsyncFlowOption设置隔离级别,我想说的是…为什么不能?我不熟悉流选项设置。它似乎没有隔离设置。如果您在TransactionScopeAsyncFlowOption上搜索,您可以阅读。使用此ctor如何?我试图理解这里的问题,因为解决方案似乎太简单了。