實體架構 4:掌握 AddObject
和 Attach
實體框架的有效使用取決於理解 ObjectSet.AddObject
和 ObjectSet.Attach
的不同角色。 AddObject
插入新實體,而 Attach
管理現有實體。 然而,需要 Attach
的情況可能會有細微差別。
Attach
的一個關鍵用例涉及與上下文分離的實體。這通常發生在檢索實體並隨後關閉上下文之後。 若要重新參與此實體進行修改,請使用 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
的另一個有價值的應用是連接缺乏自動關係的現有上下文附加實體。 考慮一個具有 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
更新關係而不修改實體本身。
以上是實體框架 4:何時使用 `AttachObject` 與 `AddObject`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!