У меня есть объект Venue:
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
s в виде таблицы текстовых полей.Это отправляется обратно на Edit(VenueDetailsViewModel venueDetailsViewModel)
.Используя отладчик, я могу убедиться, что мои изменения находятся в коллекции VenuePart
s, поэтому я думаю, что у нас все хорошо с привязкой.
Мой контроллер пытается обновить 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
объекты созданы по шаблону после этого урока , если вам интересно, как выглядит этот код.