Проблема
Не уверен, что правильный способ сделать это ... У меня есть простой класс:
public partial class Event
{
public int Id { get; set; }
public string Description { get; set; }
public int? PreviousEventId { get; set; }
public virtual Event PreviousEvent { get; set; }
}
В моем проекте MVC 3 у меня есть форма, котораяиспользуется для редактирования описания события и (дополнительно) выбора предыдущего события из раскрывающегося списка.Форма отправляется в действие и, как обычно в MVC 3, автоматически сопоставляется с Event
:
[HttpPost]
public ActionResult SaveEvent(Event myEvent)
{
if (ModelState.IsValid)
{
Db.Entry(myEvent).State = EntityState.Modified;
// do some additional checks
Db.SaveChanges();
}
}
. Я хотел бы выполнить дополнительную проверку, для которой требуется доступ к PreviousEvent
, прежде чем сохранятьмоя сущностьТем не менее, свойство навигации всегда null
, когда я обращаюсь к нему в коде выше.Это имеет смысл - форма отображается непосредственно в мой класс POCO, Event
, а не в его прокси, созданный EF.
Вопрос
Есть ли способ поменять местами мой измененный Event
для его прокси, чтобы EF мог помочь с загрузкой его навигационных свойств?Я мог бы сделать:
Db.Entry(myEvent).Reference(e => e.PreviousEvent).Load();
// do some checking on myEvent.PreviousEvent
... но загрузка всех свойств навигации таким способом кажется обыденной (в этом классе гораздо больше, чем показано), и я надеюсь, что в EF есть лучший способ сделать это,Действительно ли это?