首頁 > 後端開發 > C++ > 實體框架 4 中的 AddObject 與 Attach:何時使用每種方法?

實體框架 4 中的 AddObject 與 Attach:何時使用每種方法?

Patricia Arquette
發布: 2025-01-10 13:57:41
原創
689 人瀏覽過

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

Entity Framework 4 物件管理:ObjectContext.AddObject 與 Attach 方法詳解

Entity Framework 4 提供兩種方法來管理上下文中的物件:ObjectContext.AddObjectObjectSet.AddObject 用於新增物件;ObjectContext.AttachObjectSet.Attach 用於指示現有物件。雖然名稱相似,但它們在物件生命週期管理中扮演著截然不同的角色。

ObjectContext.AddObject 和 ObjectSet.AddObject:物件的誕生

處理新實體時,使用 ObjectContext.AddObjectObjectSet.AddObject。這些方法將資料庫中尚不存在的物件加入到上下文中。新增的實體會獲得一個暫時的 EntityKey 和 Added 的 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 實體,從而實現正確的資料庫更新或刪除操作。

以上是實體框架 4 中的 AddObject 與 Attach:何時使用每種方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板