如何在EF中更新导航属性/相关表?

Bor*_*ode 5 entity-framework entity-framework-4 sql-update scalar-context

我有一个Customer带有导航属性的对象Days(天是一个单独的表,具有-day_id,customer_id-FK)。

mycontext.Customers.ApplyCurrentValues(cust);
mycontext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

这仅更新了Customer的标量属性,而不更新了几天。有什么聪明的方法可以更新Days?(无需在几天内手动迭代。)?如果不是,是否有最佳实践来更新第二张表(天)?如果可能的话,请编写明确的代码。

ps我当前正在使用EF 4.0

Yul*_*dra 5

GraphDiff如果您想要一种简单易用的方法来处理断开连接的对象,则可以使用库。

mycontext.UpdateGraph(cust, map => map.OwnedCollection(x => x.Days));
mycontext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

这将插入或更新客户对象,也将更新Days集合。


Bis*_*del 1

不,如果不手动迭代相关实体,您就无法做到这一点。看看这个问题和答案可能会有所帮助。MVC 实体框架修改子实体

  • @BornToCode:是的,您的评论中链接的帖子不相关,因为您有一个导航*集合*需要更新,另一篇帖子是关于更新导航*参考*。更新集合的一种方法是这样的:http://stackoverflow.com/a/5540956/270591(虽然它适用于 `DbContext`/EF>=4.1,但想法和代码应该可翻译为 `ObjectContext`/EF 4.0。) (2认同)