エンティティフレームワークが追加、変更、削除されているかどうかを正しく確認する方法を探しています。現在、それが働いているエンティティフレームワークのチェック、追加、変更、削除
int state = 0;
var added = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Added).ToList();
var modified = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Modified).ToList();
var deleted = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Deleted).ToList();
if (added.Count > 0)
state = 1;
if (modified.Count > 0)
state = 2;
if (deleted.Count > 0)
state = 3;
:以下は私のコーディングです。私はちょうどそれを行うための他の適切な方法があるかどうかを知りたい。パフォーマンスを向上させるために
私はこのようなチェックの必要性を見たことがありません。保留中の変更があると思われる場合は、SaveChanges()を実行して移動します。 あなたの質問は、あなたが何を必要としているかを私に不思議に思っています。あなたはそれについて詳述できますか? また、実際のコードではなく、単純なバージョンである可能性があります。ただし、1つのエントリが変更され、別のエントリが削除されるとどうなりますか?あなたの例では、状態が上書きされているようです。私はあなたがより精巧な状態追跡構造を持っていると思いますか? –
@StreamcapこんにちはStreamcap。実際に何をしているのですか?自分のEFに変更を記録し、そのコメントを書き留める必要があります。たとえば、EFが追加された場合、「新規作成(何か)」となります。変更された場合は「更新(何か)」となります。現在、一度に変更できるエントリは1つだけです。それが正しいと思いますか?ありがとう – Farid
@ファリッドこれを行うにはいくつかの方法があります。 1つの方法(粗ではあるが)は、挿入/更新/削除時にログ行を書き込むトリガーをデータベースに入れることです。もう1つは、変更の詳細な検出が必要な場合に備えて、ロギングフレームワークを使用することです。 Serilogを調べることをお勧めします。余分な作業を必要とせずに、無料で、強力です。 –