DbContext / CodeFirstを使用してwinformsアプリケーション内にEntityFrameworkを実装しており、エンティティが別のコンテキストで削除/更新された場合のチェック/処理の適切な方法について、次の質問があります。
たとえば、いくつかの補助テーブルデータ(StateCodesなど)があり、ユーザーは別のデータに移動して、必要に応じて状態を追加/削除できます。この補助エディターフォームは、独自のDbContextを利用し、ユーザーがフォームを終了すると変更を保存します。メインフォームに戻ると、メインコンテキストはデータベースに加えられた変更を認識しないため、エンティティのDbSetをリロードします。残念ながら、「MI」状態コードを削除すると、「Load」を呼び出してすべてを取り込んだ後でも、EntityStateが変更されていないDbSetのLocalプロパティにまだ存在しているようです。
メインコンテキストを完全に破棄する以外に、データベースから削除されたエンティティを確認するための最良の方法は次のとおりですか?
foreach (State state in db.States.Local)
{
DbEntityEntry entry = db.Entry(state);
DbPropertyValues databaseValues = entry.GetDatabaseValues();
if (databaseValues == null)
{
db.States.Remove(state);
}
else
{
entry.OriginalValues.SetValues(databaseValues);
}
}
ご協力ありがとうございました