首页 >后端开发 >C++ >实体框架 4:何时使用 `AttachObject` 与 `AddObject`?

实体框架 4:何时使用 `AttachObject` 与 `AddObject`?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-10 14:02:42382浏览

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

实体框架 4:掌握 AddObjectAttach

实体框架的有效使用取决于理解 ObjectSet.AddObjectObjectSet.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 实体的集合)。如果您已加载 PersonAddress 对象,但它们的关系尚未建立,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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn