【发布时间】:2011-03-06 10:32:52
【问题描述】:
考虑一个处理房屋和图片的应用程序。名为House 的实体与HousePicture 具有1:n 关系。
该应用程序允许用户创建和编辑House,以及添加/删除HousePictures。
[HttpPost]
public ActionMethod Edit(House h)
{
//get an attached entity from the DB first.
House original = db.Houses.SingleOrDefault(x=>x.ID==h.ID);
UpdateModel(original);
//collect all the uploaded pictures.
original.HousePictures = GatherPicturesFromForm();
db.SaveChanges();
// the changes for the House are saved,
//but child collection Pictures are not.
}
从头开始重新创建子集合时,您如何更新 - 添加和删除 - 子集合?
-
Add()或Attach()用于集合中的每个孩子? - 您需要按什么顺序添加或附加父实体与子集合?
- 如何检测要删除的孩子?这是 EF4 的一项功能,删除由框架自动发生,还是开发人员需要编写此逻辑?
当添加多个
HousePicture时,其 ID == 0。具有 SQL Server 主键的实体具有自动分配的 PKint IDENTITY(1,1)。这成为一个问题,因为 EF4 认为 2+ 孩子具有相同的 ID。您对使用 Entity Framework 4 保存子集合有什么建议?
- 关于在更新/添加/删除时使 1:n 集合的持久性更容易的任何其他建议?
【问题讨论】:
-
你是如何解决这个问题的?将 EntityCollection 保存回数据库?
标签: asp.net-mvc entity-framework entity-framework-4