实体框架 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中文网其他相关文章!