2011-08-11 9 views
3

EntityObject派生型またはプロキシオブジェクトを変更追跡を操作するとき、彼らはEntity Framework - 自動変更検出の利点は何ですか?

何利点これは私を与えるんが発生するとEntity Frameworkのは、自動的にエンティティに加えられた変更を追跡しますか?これがなければ私の変更はSaveChangesを呼び出しても検出され、POCOは正しく保持されます。

また、EFのオンラインチュートリアルの多くは、変更を加えた後に明示的に状態を変更するように変更する理由は何ですか?生成し、DBに対して実行するためにどのようなSQL - あなたはSaveChangesメソッドを呼び出すとき()、データベース、すなわちに更新するために、どのエンティティ知っているように

context.Entry(model).State = EntityState.Modified; 

答えて

1

EFは、あなたのエンティティの変更を追跡します。


以下の理由は、現在追跡されていないモデルを添付して、状態を変更済みにすることです。

context.Entry(model).State = EntityState.Modified; 

エンティティのインスタンスを自分で作成した場合などに行う必要があります。 -

var customer = new Customer(); 

これは、顧客をDbContextに追加しないため、追跡されません。だからあなたはcontext.Entry(顧客)を使用する必要があります。

+0

私は具体的には、フレームワークが提供する自動変更の追跡と、基本的なスナップショットの追跡よりも何を提供しているのかを指摘していました。 「インスタント通知」としてここに記載されているように、msdn.microsoft.com/en-us/library/gg696177(v=VS.103).aspx状態を変更済みに変更する行は、追跡対象のエンティティを変更した後に使用されます。理解していない。私がそれをコメントアウトすると、エンティティはまだ期待通りに更新されます – SeeNoWeevil

関連する問題