2016-12-10 18 views
2

DbContextに保存したくないテーブルデータがあります。データベースを削除してもう一度設定しましたが、保留中の変更はDbContextから離れることはありません。Entity Frameworkの保留中の変更をクリアする方法

データベースを再構築した後、私のデータベーステーブルは空ですが、オブジェクトのリストとしてエンティティを呼び出すと、古いオブジェクトが含まれています。 Entity Framework 6を​​使用してDbContextから古い保留データを消去する方法についてのアドバイスはありますか?

答えて

2

を配置する必要がありますか?

これがそうである場合、問題は、後で同じ操作の同じDbContextオブジェクトを再利用しているという事実にあります。現在の操作が終了するとすぐにDbContextを処分し、新しい操作のために新しいものを作成してください。

は一般的に、すべての操作は、このフォームを持っている必要があります:何が例外を持つ、またはSaveChangesを呼び出すことがない決めるのように、問題のある場合

using (DbContext context = new DbContext()) // Use concrete context type 
{ 
    // Do stuff with context 
    context.SaveChanges(); 
} // At this point your context seizes to exist 

、現在のコンテキストで開催されたすべての中間の変更はとして破棄されますよく

+0

アハはそれを考えていませんでした。しかし、持ち物を取り除くか、どうすれば取り除くことができますか? –

+0

削除しないでください。 'DbContext'の新しいインスタンスを作成すると、空になります。操作間で 'DbContexts'を再利用しないことが一般的なルールです。それらはメモリを消費し、実際にはあなたの例で起こった誤った実行を引き起こすことさえあります。 –

+0

今、私はそれを理解しています。ありがとう! –

2

あなたは右、DbContextに変更されたオブジェクトを保持しているDbContext

using (var ctx = new MyDbContext()) 
{ 
    // Do your thing... 
    // Call ctx.SaveChanges(); 
} 

using (var ctx = new MyDbContext()) 
{ 
    // Do your thing... 
    // You should not find the data anymore 
} 
関連する問題