考虑一个处理房屋和图片的应用程序。名为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()
?添加多个HousePicture
时,其ID == 0.实体在SQL Server中具有主键,其自动分配的PK为int IDENTITY(1,1)
。这成为一个问题,因为EF4认为2+孩子具有相同的ID。
您对使用Entity Framework 4保存子集合有何建议?
答案 0 :(得分:0)
在EF中,只需将新对象添加到集合中,它们将自动使用正确的外键值持久保存到数据库中。
original.HousePictures.AddRange(GatherPicturesFromForm());