我们可以使用SQL就像这样:如何在LINQ to SQL中使用WITH(NOLOCK)?
SELECT * FROM student WITH(NOLOCK);
我如何与LINQ实现这一目标而无需使用TransactionScope
的到SQL?
我们可以使用SQL就像这样:如何在LINQ to SQL中使用WITH(NOLOCK)?
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)操作。这当然取决于你的情况,但你的数据可能会处于不一致的状态。
你为什么要使用NOLOCK? – 2010-02-08 10:11:13
Ligaoren,我的回答对你有用吗? – Steven 2010-02-08 21:44:19
为什么你不想使用TransactionScope? – KristoferA 2010-02-09 02:02:10