MVC 3 Создать действие с Entity Framework и дочерними объектами - PullRequest
1 голос
/ 25 февраля 2011

Новичок в 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.

Спасибо за помощь.

1 Ответ

0 голосов
/ 05 марта 2011

Мортен, ты прав.Мне пришлось создать экземпляр объекта EventTime и назначить его Event.EventTime.Это сработало.Я думаю, что это имеет смысл, что он не сделает это для меня автоматически.Спасибо за комментарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...