需要对带有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/