2012-04-26 44 views
1

我的问题来了两倍。 Firsty,我通常会在使用ObjectContext时做类似entity.ExecuteStoreCommand的事情,但是这看起来好像不像DBContext那样。DBContext Linq实体读取未提交

  • 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指针,将是柏,关于性能,最佳实践等

干杯, Simps

+0

是否有任何人知道,如果微软会不断提供对DBContext的支持,或者如果他们计划发布新版本...我应该使用它,我是否符合标准? – Adam 2012-04-26 22:15:53

+0

“新版本”是什么意思?将有新版本的实体框架将包含新版本的DbContext。以下是关于EF版本前进的博客文章:http://blogs.msdn.com/b/adonet/archive/2011/10/18/how-we-talk-about-ef-and-its-future-versions的.aspx。最近该团队运送了EF 4.3.1和EF 5.0.0-beta2。 EF 5适用于.NET 4.5,允许使用添加到.NET Framework 4.5中的核心库的新功能(例如枚举,空间类型,TVF等)。 – Pawel 2012-04-28 17:47:07

回答

2

的DbContext不设置隔离级别。如果你需要使用的DbContext API来执行SQL命令,你可以这样做:

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

如果你需要的ObjectContext实例支持你的DbContext对象,你可以做到以下几点:

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

有趣的是,我认为这有帮助。你知道他们为什么不允许你设置隔离级别,它是基于DBContext中涉及的缓存吗? – Adam 2012-04-28 10:17:17

+0

你可以在这里添加这个想法:http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions – Pawel 2012-04-28 17:50:10