
實體架構 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中文網其他相關文章!