我正在使用以下格式通过linq提交对我的数据库所做的更改。
Begin Transaction (Scope Serialized, Required)
Check Business Rule 1...N
MyDataContext.SubmitChanges()
Save Changes Done In Previous Query To Log File
End Transaction Scope
但是在 SQL Server 分析器中,我看到连接开始时出现了以下行。
set transaction isolation level read committed
我阅读了这篇文章(http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/93a45026-0425-4d49-a4ac-1b882e90e6d5),并认为我已经得到了答案;
直到我看到了这个(https://connect.microsoft.com/VisualStudio/feedback/details/565441/transactionscope-linq-to-sql?wa=wsignin1.0)在Microsoft Connect上的内容。
请问有人能告诉我我的代码是否实际上是在序列化隔离级别下执行,还是只是在读取提交时运行?
Audit Login
语句将显示设置隔离级别之前的隔离级别。在Profiler中查看隔离级别的设置是困难的(正如http://entityframework.codeplex.com/workitem/1712中_divega_的评论所解释的那样)。要确定,请查看sys.dm_exec_session视图中的会话记录。Sam提到了一种方法。您会发现,Profiler报告的`Audit Login`通常与当前隔离级别不匹配。 - DeveloperRob