如何在 LINQ to SQL 中使用WITH(NOLOCK)?

发布于 2024-08-21 04:42:30 字数 192 浏览 10 评论 0原文

我们可以像这样使用 SQL:

SELECT * FROM student WITH(NOLOCK);

如何在不使用 TransactionScope 的情况下使用 LINQ to SQL 实现此目的?

we can use SQL just like this:

SELECT * FROM student WITH(NOLOCK);

How can I achieve this with LINQ to SQL without the use of a TransactionScope?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一身仙ぐ女味 2024-08-28 04:42:30

LINQ to SQL 没有任何执行此操作的机制,但您可以创建具有特定隔离级别的事务。看下面的代码:

using (var con = new SqlConnection("constr"))
{
    con.Open();

    using (var transaction = con.BeginTransaction(
        IsolationLevel.ReadUncommitted))
    {
        using (var context = new SchoolDataContext(con))
        {
            // HACK: Setting the context.Transaction is 
            // needed in .NET 3.5 (fixed in .NET 4.0).
            context.Transaction = transaction;
            var q = from s in context.Students select c;
        }
    }
}

有时使用这种类型的隔离是有用的,即出于性能原因。但请确保您不使用此类数据库隔离执行任何创建、更新或删除 (CUD) 操作。当然,这取决于您的情况,但您的数据可能会处于不一致的状态。

LINQ to SQL does not have any mechanism of doing this, but you can create a transaction with a specific isolation level. Look at the code below:

using (var con = new SqlConnection("constr"))
{
    con.Open();

    using (var transaction = con.BeginTransaction(
        IsolationLevel.ReadUncommitted))
    {
        using (var context = new SchoolDataContext(con))
        {
            // HACK: Setting the context.Transaction is 
            // needed in .NET 3.5 (fixed in .NET 4.0).
            context.Transaction = transaction;
            var q = from s in context.Students select c;
        }
    }
}

Sometimes using this type of isolation is useful, i.e. for performance reasons. But please make sure you don't do any create, update or delete (CUD) operations using this type of database isolation. It of course depends on your situations, but your data could get in an inconsistent state.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文