0

N層アプリケーションに関する記事を読んで、同時実行トークンと変更追跡情報に関する情報に出くわしました。

理解しておくべきもう1つの重要な概念は、デフォルトで生成されたエンティティはシリアル化をサポートしますが、それらの変更追跡情報は、シリアル化をサポートしないObjectStateManager(ObjectContextの一部)に格納されるということです。

私の質問は3つあります:

  1. 使用するときに同じことはありDbContextますか?
  2. データベースとの唯一の相互作用がステートメント内のRepositoryクラス内にある場合、プログラムがステートメントをusing離れるときにデータベース接続を閉じると、変更追跡のオプションが削除されますか?using
  3. これは、同時実行トークンとして/使用できますか?
4

1 に答える 1

1
  1. はい。DbContextは単なるラッパーであり、プロパティ ( return ) をObjectContext介して変更追跡情報を公開し、呼び出しメソッド ( return ) を介して特定のエンティティを公開します。ChangeTrackerDbChangeTrackerEntryDbEntityEntry<T>
  2. はい。コンテキストを閉じると、すべての変更追跡情報が削除されます。
  3. 同時実行トークンと変更追跡は、2 つのまったく異なる概念です。変更追跡は、 を呼び出したときにデータベースで実行する必要がある操作をコンテキストに通知しますSaveChanges。エンティティを現在のコンテキスト インスタンスにロードしてから、エンティティに対して行った変更を追跡します。コンカレンシー トークンは、データベース内のオプティミスティック コンカレンシーを解決します => 別のプロセス / スレッド / ユーザー / コンテキスト インスタンスが、コンテキストが変更しようとしているのと同じレコードを変更していないことを検証しますSaveChanges
于 2013-01-17T10:02:59.570 に答える