1

我的问题有两个方面。首先,我通常会在使用 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);
            }
        }

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

干杯,辛普斯

4

1 回答 1

2

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

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

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

var objecCtx = ((IObjectContextAdapter)dbContext).ObjectContext;
于 2012-04-27T20:59:20.273 回答