ホームページ >バックエンド開発 >C++ >Entity Framework 4 での AddObject と Attach: 各メソッドをいつ使用するか?

Entity Framework 4 での AddObject と Attach: 各メソッドをいつ使用するか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-10 13:57:41693ブラウズ

AddObject vs. Attach in Entity Framework 4: When to Use Each Method?

Entity Framework 4 のオブジェクト管理: ObjectContext.AddObject メソッドと Attach メソッドの詳細な説明

Entity Framework 4 には、コンテキスト内のオブジェクトを管理するための 2 つのメソッドが用意されています。新しいオブジェクトを追加するための ObjectContext.AddObjectObjectSet.AddObject 、既存のオブジェクトを示すための ObjectContext.AttachObjectSet.Attach です。名前は似ていますが、オブジェクトのライフサイクル管理ではまったく異なる役割を果たします。

ObjectContext.AddObject と ObjectSet.AddObject: オブジェクトの誕生

新しいエンティティを操作する場合は、ObjectContext.AddObjectObjectSet.AddObject を使用します。これらのメソッドは、データベースにまだ存在しないオブジェクトをコンテキストに追加します。新しく追加されたエンティティは、一時的な EntityKey と追加された EntityState を取得します。 SaveChanges を呼び出した後、フレームワークはこれらのオブジェクトをデータベースに挿入する必要があるエンティティとして認識します。

ObjectContext.Attach および ObjectSet.Attach: 既存のオブジェクトへの接続

AddObject とは異なり、ObjectContext.AttachObjectSet.Attach はデータベースにすでに存在するオブジェクトに使用されます。 Attach EntityState を added に設定する代わりに Unchanged に設定し、オブジェクトがコンテキストにアタッチされてから変更されていないことを示します。 Attach でマークされたエンティティは、EntityKey 値と一致することによってデータベース内で検索され、SaveChanges が呼び出されるときにそれに応じて更新または削除されます。

Attach メソッドの実践的な応用例

AddObject は新しいエンティティを作成するために使用され、Attach は既存のオブジェクトを操作する場合に便利です。たとえば、コンテキスト内の既存の Person エンティティを既存の Address エンティティに接続するには:

<code class="language-csharp">var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name == "Joe Bloggs");
var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID);
existingPerson.Addresses.Attach(myAddress);
// 或:
myAddress.PersonReference.Attach(existingPerson);
ctx.SaveChanges();</code>

Attach 操作により、Address エンティティが既存のエンティティとして認識され、person エンティティに接続されるようになり、データベースの正しい更新または削除操作が可能になります。

以上がEntity Framework 4 での AddObject と Attach: 各メソッドをいつ使用するか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。