我有這個場地對象:子對象是否應該在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