Entity Framework 4: AddObject
と Attach
Entity Framework を効果的に使用するには、ObjectSet.AddObject
と ObjectSet.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 サイトの他の関連記事を参照してください。