DBContext Linq实体读取未提交

时间:2012-04-26 22:14:39

标签: .net performance linq dbcontext

我的问题有两个问题。在使用ObjectContext时,我通常会做entity.ExecuteStoreCommand这样的事情,但这似乎与DBContext不同。

  • A)我以为如果你想做一个未提交的阅读 数据库你必须在某处设置它是正确的,并且 仍然是DBConext的情况。
  • B)虽然在处理付款细节等时我从不提倡脏读......其他人发现它可以提高他们的linq语句的性能,如果是这样的话......任何人都有任何要点关于此事的参考统计等?

我的代码示例

protected String isolationLevel = "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;";
 public UserAccountDetail GetUserAccount(string userName, int userId)
        {
            using (var personEntity = new PersonEntity())
            {
                // set isolation level here such as... personEntity.ExecuteStoreCommand(isolationLevel, null);

                userAccountDetails = personEntity.UserAccountDetails.FirstOrDefault(q => q.Username == userName && q.UserID == userId);
            }
        }

如果任何人有任何DBConext指针,那将是phat,关于性能,最佳实践等。

干杯, Simps

1 个答案:

答案 0 :(得分:2)

DbContext未设置隔离级别。如果需要使用DbContext API执行SQL命令,可以执行以下操作:

dbContext.Database.ExecuteSqlCommand("Your SQL statement here");

如果需要支持DbContext对象的ObjectContext实例,则可以执行以下操作:

var objecCtx = ((IObjectContextAdapter)dbContext).ObjectContext;