2012-04-26 12 views
1

私の質問は2倍になります。まず、Object Contextで作業するときは通常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

+0

「新しいバージョン」とはどういう意味ですか?新しいバージョンのDbContextを含む新しいバージョンのEntity Frameworkが存在します。 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のコアライブラリ(enum、空間型、TVFなど)に追加された新しい機能を使用することができます。 – Pawel

答えて

2

DbContextにはありません隔離レベルを設定します。あなたが行うことができますDbContext APIを使用してSQLコマンドを実行する必要がある場合:

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

あなたはDbContextを支持したObjectContextインスタンスが必要な場合は、次の操作を行うことができますオブジェクト:

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

興味深い、私はそれが役立つと思います。なぜ彼らはあなたが分離レベルを設定することを許可していないのか知っていますか?それはDBContextに含まれるキャッシングに基づいていますか? – Adam

+0

このアイデアをここに追加できます:http://data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions – Pawel

関連する問題