我们可以使用SQL就像这样:

SELECT * FROM student WITH(NOLOCK);

如何与LINQ实现这一目标而无需使用TransactionScope对于SQL?

有帮助吗?

解决方案

的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)操作。这当然取决于你的情况,但您的数据可能会处于不一致的状态得到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top