Новичок в MVC, так что я уверен, что есть правильный способ сделать это, что мне не хватает.
У меня есть объект «Событие», в котором есть дочерний / связанный объект «EventTime».Когда я создал свое действие редактирования, я мог нормально загрузить модель события с помощью оператора linq.
Event mEvent = db.Events.Single(s => s.EventID == id);
Затем, на мой взгляд, я могу получить доступ к ребенку, пройдя объект:
@Html.EditorFor(model => model.Event.EventTime.DateStart)
Этоработает отлично.Действие «Правка» получает значения, выполняет магическую привязку и сохраняет изменения.
UpdateModel(mEvent);
db.SaveChanges();
Теперь к моей проблеме.Создать действие.В примере приложения Music Store на asp.net они говорят вам создать новую пустую модель для передачи вашему представлению.
Event mEvent = new Event();
Однако мое представление получает исключение, когда сталкивается с любой ссылкой на дочернюю сущность Event..Время события.Также в контроллере создайте действие, если я попытаюсь установить какие-либо свойства после создания нового объекта mEvent, я получу исключение Ссылка на объект.
Event.EventTime.DateStart = DateTime.Now;
Я думал, что EF волшебным образом создаст дочерний элемент при доступе к нему.Я предполагаю, что проблема в том, что я не создаю модель из БД, у нее нет значений внешнего ключа для ссылки на объекты вместе?
Итак, как мне это сделать?Я подумал о ViewModel и загрузке каждой сущности в этом, а затем в моем действии HTTPPost я предполагаю, что мне придется обновлять БД в младшем дочернем порядке первого порядка и обновлять ссылки, когда каждая из них сохраняется в базе данных?Кажется, это сработает, но кажется, что это побеждает цель EF.
Спасибо за помощь.