c# - 如何实现此命令以防止与 LINQ to SQL 发生死锁?

标签 c# .net linq-to-sql

我想在我使用 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/

相关文章:

c# - System.Drawing.Graphics.DrawString - "Parameter is not valid"异常

c# - 查询中的 linq to sql 报告表

c# - 如何在 winform C# 中控制图表的缩放能力?

C# ASP.Net Webforms - 字符串 - 静态与静态只读

c# - 文本框上的 jquery 日期选择器问题

c# - 是否可以在 Windows 10 上调整 BLE 连接间隔?

C# FileSystemWatcher,如何知道文件是否完全复制到监视文件夹中

c# - 比较从不同程序集加载的对象

c# - LINQ TO SQL::数据更新问题

linq-to-sql - LINQ to SQL - 插入新记录