我是 EntityFramework 新手。我面临一个非常奇怪的问题。我无法使用 linq 到实体查询来使用事务。我使用过 DbTransaction 和 TransactionScope。一旦查询被命中,错误就会发生。我正在使用 EF 4.3。上下文照常从 DbContext 派生。我正在使用代码优先方法。
using (TransactionScope s = new TransactionScope())
{
using(var context = new XYZContext())
{
context.Database.Connection.Open();
Int32 count = (from xyz in context.XYZs
where xyz.Name == "SameName"
select xyz.Name).Count();
Assert.AreEqual(count, 1);
}
}
我有些疑惑。我不想使用 TrasactionScope,因为我听说它有性能问题。那么我怎样才能使用 DbTransaction 代替(也为我抛出错误)?为什么我需要显式打开连接?当我“更新”一个上下文时,它不应该为我自动打开连接吗?