EF 코드 우선에서 내 탐색 속성을 얻는 데 큰 어려움을 겪고 있습니다. 추상화 예를 들어, 내가 가진 : 다음엔티티 프레임 워크 - 탐색 속성 저장하지 않음
public class Parent{
public int ParentID {get; set;}
public virtual List<NamedChild> Children {get; set;}
public Parent(){}
public void Init(int ParentID, List<UnnamedChild> Children){
this.ParentID = ParentID;
this.Children = Children.ConvertAll(x => new NamedChild(x, ""));
}
}
public class NamedChild{
public int ChildID {get; set;}
public string Name {get; set;}
public NamedChild(UnnamedChild c, string Name){
this.ChildID = c.ChildID;
this.Name = Name;
}
}
public class UnnamedChild{
public int ChildID {get; set;}
public UnnamedChild(int ChildID){
this.ChildID = ChildID;
}
}
하고 나중에 ... 내가 현재 DbSet로 볼 수 디버깅하고있어 (1) 부모가된다는 사실을 보여주고 자하는 경우
List<UnnamedChild> children = GetChildrenFromSomewhere();
Parent p = db.Parents.Create();
p.Init(1, children);
db.Parents.Add(p);
db.SaveChanges();
, "Children"속성은 2 NamedChild의 List로 설정됩니다. 이것은 좋은 일입니다. 그러나 프로그램을 중지하고 다시 실행하면 DbSet을 보면 여전히 1 개의 Parent가 있지만 해당 "Children"속성은 null로 설정되어 있습니다.
요약하면, 값을 저장 한 직후 값은 맞지만 DB 컨텍스트를 다시로드하자마자 해당 값이 누락됩니다 (nulls). LazyLoading을 활성화 한 상태에서 가장 최근 EF를 실행하고 있습니다.
.Include()를 사용하면 Null 값을 적절한 NamedChild 목록으로 채 웁니다. 그러나 LazyLoading을 사용하려면이 값이 필요합니다.
. 그것은 비록 차이를 가져서는 안된다. – Jordan