Entity Framework 4: AddObject メソッドと Attach メソッドの違いと応用
Entity Framework (EF) では、エンティティ管理には AddObject
と Attach
の 2 つのメソッドが含まれます。 AddObject
はシステムに新しいエンティティを挿入するために使用され、Attach
はデータベースにすでに存在するエンティティを処理するために使用されます。
AddObject: 新しいエンティティの作成に使用されます
タイトルにあるように、AddObject
は新しいエンティティを作成するために使用されます。このメソッドは、生成された EntityKey を割り当て、EntityState を added に設定します。 SaveChanges
が呼び出されると、EF はこのエンティティをデータベースに挿入する必要があることを理解します。
添付: 既存のエンティティを変更するために使用されます
対照的に、Attach
はデータベースにすでに存在するエンティティを変更するために使用されます。 Attach
を使用する場合、EntityState は added に設定されません。 Unchanged 状態のままであり、エンティティがコンテキストにアタッチされてから変更が行われていないことを示します。これにより、EF は SaveChanges
を呼び出すときに EntityKey の値を使用してエンティティを識別し、必要に応じて更新または削除できるようになります。
Attach メソッドの適用シナリオ
Attach
メソッドの便利なシナリオは、データベースから明示的に取得せずに既存のエンティティを更新することです。たとえば、コンテキスト内に既に存在する Person オブジェクト existingPerson
がある場合、そのプロパティを更新してコンテキストにアタッチできます:
<code>var ctx = new MyEntities(); var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs"); existingPerson.Name = "Joe Briggs"; ctx.Persons.Attach(existingPerson); ctx.SaveChanges();</code>
Attach
を使用すると、エンティティの現在の状態を取得するために追加のクエリを実行する必要がなくなります。
概要
Entity Framework を効果的に使用するには、AddObject
と Attach
の違いを理解することが重要です。 AddObject
は新しく作成されたエンティティに使用され、Attach
は既存のエンティティに使用され、それらを効果的かつ効率的に変更できます。
以上がEntity Framework 4: AddObject と Attach: 各メソッドをいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。