2012-04-26 50 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