需要对带有linq的Dbml文件的建议,我们有包含大量数据的数据库。有时table中有锁,因此我们需要在dbml类上应用未提交读的隔离级别(我们知道此隔离级别有一些缺点)。

我在dbml文件中将苹果下面的代码作为部分类

partial class MainDataContext
{
  public MainDataContext()
  {
      base.Connection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
  }
}


这是实施的正确方法吗?或对此提出任何建议。

谢谢

最佳答案

您可以将与db交互的代码放在TransactionScope块中,并为TransactionScope设置所需的隔离级别。

TransactionOptions _transactionOptions = new TransactionOptions() { IsolationLevel = IsolationLevel.Snapshot };
using (TransactionScope transactionScope = new TransactionScope(TransactionScopeOption.Required, _transactionOptions))
{
 //your code here
}


当然,更进一步,您可以使用类似于Factory的静态方法封装对transactionScope的创建,以便在任何需要的地方都更加容易,并且如果您要更改隔离级别,将有一个单独的地方可以更改它。根据您的要求,选择最适合您的。

关于c# - linq to sql中的隔离级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14811702/

10-13 01:02