我有这个场地对象:子对象是否应该在Entity Framework 4 Code-First中自动更新?
public class Venue
{
public int Id { get; set; }
[Required]
[MaxLength(512)]
public string Name { get; set; }
public string Description { get; set; }
[Required]
[Display(Name = "Venue Type")]
public int VenueTypeId { get; set; }
public virtual VenueType VenueType { get; set; }
[Required]
[Display(Name = "Company")]
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
public virtual ICollection<VenuePart> VenueParts { get; set; }
}
正如你所看到的,它有VenuePart
个集合。我将Venue
发送到视图,并将VenuePart
的集合作为文本框的表格输出。这会被回传至Edit(VenueDetailsViewModel venueDetailsViewModel)
。使用调试器,我可以验证我的更改是否在VenuePart
的集合中,所以我认为我们很擅长绑定。我的控制器试图更新Venue
。它直接在对象上成功执行属性,例如Name
。但是,除非循环访问集合,否则不会更新这些对象。这是典型的行为吗?
unitOfWork.VenueRepository.Update(venueDetailsViewModel.Venue);
// Should this loop be necessary?
foreach (var venuePart in venueDetailsViewModel.Venue.VenueParts)
{
unitOfWork.VenuePartRepository.Update(venuePart);
}
unitOfWork.Save();
此刻,我甚至担心列表或东西,从列表中消失了(虽然这就是我下一个攻坚)处理新的东西。对于我的第一步,我只想更新列表。是否有必要遍历集合并更新每个单独的对象?如果我不这样做,他们不会保存。但似乎他们应该没有我的循环。我的期望是否过高或者我做错了什么?
我的repository
和unitOfWork
对象在this tutorial之后形成图案,如果您好奇该代码的外观如何。
听起来很合理。我会尝试将其移入存储库中的建议。 – Chris 2012-03-05 07:20:15