Context.Refreshメソッドを使用してContextの変更を元に戻そうとしていますが、RefreshがContextのメンバーではないようです。Entity Framework 4.1 - RefreshはContextのメンバーではありません
私はMicrosoft ADO.NET Entity Framework 4.1 RCバージョンを使用しています。
Context.Refreshメソッドを使用してContextの変更を元に戻そうとしていますが、RefreshがContextのメンバーではないようです。Entity Framework 4.1 - RefreshはContextのメンバーではありません
私はMicrosoft ADO.NET Entity Framework 4.1 RCバージョンを使用しています。
DbContext
にはRefresh
メソッドがありません。 IObjectContextAdapter
インターフェイスを使用して、基礎となるObjectContext
を取得し、その上でRefreshを呼び出すことができます。ここで
var objectContext = ((IObjectContextAdapter)context).ObjectContext;
は...すべての変更されたオブジェクトを再ロードするためのサンプルです:
var modifiedEntries = context.ChangeTracker.Entries()
.Where(e => e.State == EntityState.Modified);
foreach (var modifiedEntry in modifiedEntries) {
modifiedEntry.Reload();
}
このスレッドに投稿された答えはあまりにも役立つかもしれない:Refresh entity instance with DbContext要約すると
しかし、次のようなものを呼び出してみてください:
dbContext.Entry(someEntityObjectInstance).Reload();
しかし、これはナビゲーションプロパティをリフレッシュしないことに気づいているので、ナビゲーションプロパティを更新することについても心配する必要がある場合は、すべてのナビゲーションプロパティを再ロードするか、 ()またはRefresh()をIObjectContextAdapterにキャストした後、または単にDbContextを再作成してください。私の場合は
、私は率直に言って)それだけで(コンテキストを再作成して再検索することが最善と判断しました実体:
dbContext = new Model.Entities();
someEntityObjectInstance = dbContext.SomeEntityType.Find(someEntityObjectInstanceKey);
ここには、単純な/最良の答えは間違いなくありません。
名誉 "崇拝"、あなたは私のためにその日を保存しました。この質問には、* LOTS *の回答があり、あなたのものはずっと最高です!本当にDbContextがRefreshを直接サポートしていないのは本当に悪いですか?これは、マルチティアアプリケーションでは非常に一般的なパターンであると思われます。私はちょうどオブジェクトを読み込んで、あなたの答えを見る前に変更されたものをコピーすることに近づいていました:-) – Joe