ホームページ >バックエンド開発 >C++ >Entity Framework 4: `AttachObject` と `AddObject` をいつ使用するか?

Entity Framework 4: `AttachObject` と `AddObject` をいつ使用するか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-10 14:02:42428ブラウズ

Entity Framework 4: When to Use `AttachObject` vs. `AddObject`?

Entity Framework 4: AddObjectAttach

をマスターする

Entity Framework を効果的に使用するには、ObjectSet.AddObjectObjectSet.Attach の異なる役割を理解するかどうかにかかっています。 AddObject が新しいエンティティを挿入する間、Attach は既存のエンティティを管理します。 ただし、Attach が必要な状況は微妙な場合があります。

Attach の 1 つの重要な使用例には、コンテキストから切り離されたエンティティが含まれます。これは多くの場合、エンティティを取得し、その後コンテキストを閉じた後に発生します。 このエンティティを変更のために再度関与させるには、Attach:

を使用します。
<code class="language-csharp">var existingPerson = new Person { Name = "Joe Bloggs" };
ctx.Persons.Attach(existingPerson);
existingPerson.Name = "Joe Briggs";
ctx.SaveChanges();</code>

これにより、UPDATE ステートメントが生成され、冗長なデータベースの取得が回避されます。

Attach のもう 1 つの有益なアプリケーションは、自動関係を持たない既存のコンテキストに関連付けられたエンティティを接続することです。 Person ナビゲーション プロパティを持つ Addresses エンティティ (Address エンティティのコレクション) を考えてみましょう。 Person オブジェクトと Address オブジェクトの両方をロードしたが、それらの関係が確立されていない場合は、Attach が解決策を提供します。

<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);
ctx.SaveChanges();</code>

ここで、Attach はエンティティ自体を変更せずに関係を更新します。

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

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