特定のエンティティをリロードする場合は、DbContextApiを使用して、RX_DID_RXからすでに回答が得られています。
リロードしたい場合は/あなたがロードされたすべてのエンティティリフレッシュ:あなたはEntity Frameworkの4.1以降(EF5、またはおそらくEF 6)、DbContextのAPIを使用している場合
を:
public void RefreshAll()
{
foreach (var entity in ctx.ChangeTracker.Entries())
{
entity.Reload();
}
}
あなたの場合entityFramework 4(のObjectContext API)を使用している:
public void RefreshAll()
{
// Get all objects in statemanager with entityKey
// (context.Refresh will throw an exception otherwise)
var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted
| EntityState.Modified
| EntityState.Unchanged)
where entry.EntityKey != null
select entry.Entity);
context.Refresh(RefreshMode.StoreWins, refreshableObjects);
}
とにかく最高のアドバイスです、「短命コンテキスト」を使用すると、あなたがこの種の問題を回避しますしてみてください。
私は問題についての記事のカップルを書いた:リロードとデシベルのコンテキストを更新
https://christianarg.wordpress.com/2013/06/13/entityframework-refreshall-loaded-entities-from-database/
これはEntity Framework 6では機能しません – JMK
@JMKここでは正確には機能しないものはありますか?私にとってはうまくいくようです(EF 6.1.1)。 –
@SebastianKrysmanski私は約1年前にコメントしました。 – JMK