【发布时间】:2014-09-05 06:34:15
【问题描述】:
EF 中的“IsolationLevel.ReadUncommitted”是否从 CACHE 中读取?
我有一个带有 IsolationLevel.ReadUncommitted 的事务范围
Class Orders{
public int Id {get();set();}
public int OrderType {get();set();}
}
While(true){
var transactionOptions = new TransactionOptions
{
IsolationLevel = IsolationLevel.ReadUncommitted
};
using(TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
var temp = context.Orders.Include(e => e.Customer).SingleOrDefault(e => e.Id == 1);
}
}
假设,最初,我有一个订单类型为“1”的订单,temp 被初始化为那一行。如果我要使用 SSMS (MSSQL) 中的更新查询将订单的 orderType 更新为“2”,则从上下文中提取的对象的订单类型仍为“1”,尽管在 DB 中为“2”。这是因为未提交读取吗?
【问题讨论】:
-
您是否提交了
type=2更新?未提交会让您读取未提交的“2”,读取“1”指向其他问题。使用更高的 TransIsolation 应该会显示相同的结果。
标签: c# .net sql-server linq entity-framework