У меня есть модель EF Code First с таким свойством ICollection.
public class AccountProfile
{
[Key]
public int AccountID { get; set; }
public string AccountName { get; set; }
public string Email { get; set; }
[Required]
public virtual ICollection<UserProfile> LinkedUserProfiles { get; set; }
}
Я связываю представление редактирования с этой моделью, но оно отображает только свойства AccountName и Email.
У меня есть HttpPost ActionResult для обновления модели, которая принимает AccountProfile.
При публикации объект AccountProfile имеет только заполненные свойства AccountName и Email.LinkedUserProfiles является нулевым.Это означает, что модель не может быть обновлена, так как требуется свойство LinkedUserProfiles.
Я также безуспешно пробовал что-то вроде следующего
var curAccountProfile = _accountProfileRepository.GetById(accountProfile.AccountID);
TryUpdateModel(curAccountProfile);
Что я делаю не так?Как следует обрабатывать это обстоятельство в MVC?
ОБНОВЛЕНИЕ Данные поступали из репозитория, например.
var accountProfile = _accountProfileRepository.ById(1);
return View(accountProfile);
Проверка объекта accountProfile перед загрузкой представления показываетчто коллекция извлекается - так что это не тот случай, когда ленивая загрузка работает не так, как ожидалось.
С тех пор я реализовал AutoMapper, создал ViewModel для представления и изменил свой код так:1022 *
var accountProfile = _accountProfileRepository.ById(accountInformation.AccountID);
var result = _mappingEngine.Map<DisplayAccountInformationViewModel, AccountProfile>(accountInformation, accountProfile);
_unitOfWork.Commit();
Теперь это работает, как и ожидалось - но кажется, что нужно приложить больше усилий, чем следовало бы?