Я думал, что следующую задачу будет легко закодировать, но я потратил много времени и еще не нашел правильный способ ее решения.Вот сценарий
У меня есть три объекта: город, населенный пункт и донор.В городе много населенных пунктов, и у каждого населенного пункта есть два отношения «один ко многим» с донором, как указано ниже.
public class City {
public virtual List<Locality> Localities { get; set; }
}
public class Locality {
public virtual List<Donor> DonorsInOfficeLocality { get; set; }
public virtual List<Donor> DonorsInResidenceLocality { get; set; }
}
public class Donor : User {
public virtual Locality OfficeLocality {get;set;}
public virtual Locality ResidenceLocality { get; set; }
}
В моем модуле редактирования донора я получаю (идентификатор донора, ResidenceLocalityId и officeLocalityId).Объект-донор находится в отдельном состоянии, выходящем из уровня представления.Этот код не работает.Старые отношения остаются нетронутыми.
public void EditDonor(Donor donor, int residenceLocalityId, int officeLocalityId) {
Locality residenceLocality = context.Localities.Find(residenceLocalityId);
donor.ResidenceLocality = residenceLocality;
Locality officeLocality = context.Localities.Find(officeLocalityId);
donor.OfficeLocality = officeLocality;
context.Donors.Attach(donor);
context.Entry(donor).State = EntityState.Modified;
context.SaveChanges();
}
Еще одна вещь, которую я попробовал, - это изменить состояние ResidenceLocality и OfficeLocality на Modified, но это тоже не сработало.Старые отношения остались нетронутыми.И в этом случае, поскольку я изменяю локальность как измененную, мне нужно дополнительно загрузить город, чтобы избежать исключения обновления для модифицированной местности.
Если кто-то может сообщить мне, как изменить отношения «один ко многим» (как указано выше)) для объекта в отдельном состоянии, полученного от уровня представления.