我想在我使用 LINQ to SQL 的项目中实现 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
。我的理解是,这将影响全局的所有 select 语句。
我是否将其放入包含上下文对象的 DAL 中?如果是,怎么办?
谢谢! 标记
最佳答案
您可以像这样在每个 DataContext
/工作单元的基础上执行此操作:
using (var con = new SqlConnection(constr))
{
con.Open();
using (var tran =
new con.BeginTransaction(IsolationLevel.ReadUncommitted))
{
using (var db = new MyDataContext(con))
{
// You need to set the transaction in .NET 3.5 (not in 4.0).
db.Transaction = tran;
// Do your stuff here.
db.SubmitChanges();
}
tran.Commit();
}
}
当然,您可以将连接和事务的创建、提交和处置抽象出来,但这个示例是可行的。
请注意,这不会设置全局隔离级别,只是针对在特定 DataContext
类的上下文中执行的 LINQ 语句。
关于c# - 如何实现此命令以防止与 LINQ to SQL 发生死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3736544/