문제점 후
올바른 방법은 내가 간단한 클래스가 ... 이것이 할 무엇 확실하지 : 내 MVC에서EF 4.1 POCO 액세스 탐색 속성 Db.Entry()
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; }
}
을 3 프로젝트에서 이벤트 설명을 편집하고 (선택적으로) 드롭 다운 목록에서 이전 이벤트를 선택하는 데 사용되는 양식이 있습니다. 양식은 Event
에 작업에 제출하고, MVC 3 평소와 같이, 자동적으로 매핑됩니다 :
[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가 만든 프록시는 매핑하지 않습니다. 교환 할 수있는 방법은
[질문
거기에 내 EF는 탐색 속성을로드로 도울 수 있도록 자사의 프록시 Event
을 수정? 내가 할 수있는 :
Db.Entry(myEvent).Reference(e => e.PreviousEvent).Load();
// do some checking on myEvent.PreviousEvent
을 ...하지만 모든 탐색 속성을로드하는이 방법은 일상적인 것 (도시보다,이 클래스에 대한 더 많은있다), 나는 EF는이 일을 더 나은 방법이있다 바라고 있어요. 그것은 실제로합니까?
당신은 별이야,이게 내가 원했던 것처럼 보입니다! 이제는 이벤트의 속성에 동적 프록시의 속성을 바인딩하는 보편적 인 방법을 찾아야 만합니다. – Dav
다른 작업에서 'TryUpdateModel'을 방금 보았습니다. 청구서를 멋지게. 그러나, 내가''Event eventDb = Db.Events.Create(); TryUpdateModel (eventDb);'',''eventDb.PreviousEvent''도 여전히 null입니다. 유형이 동적 프록시 인 경우에도 마찬가지입니다. 왜 그거야? – Dav
컨텍스트에 이벤트를 추가 했습니까? –