問題
これを行う正しい方法がわからない...私は単純なクラスを持っています:
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
、上記のコードでアクセスするときは常にです。これは理にかなっています。フォームはEvent
、EF によって作成されたプロキシではなく、私の POCO クラスに直接マップされます。
質問
Event
EF がナビゲーション プロパティの読み込みを支援できるように、変更したものをプロキシに交換する方法はありますか? 私はそれをできた:
Db.Entry(myEvent).Reference(e => e.PreviousEvent).Load();
// do some checking on myEvent.PreviousEvent
...しかし、この方法ですべてのナビゲーション プロパティを読み込むのは平凡に思えます (このクラスには、示されているよりも多くの機能があります)。本当にそうですか?