У меня есть три класса, которые выглядят следующим образом. Я назову их родителями, детьми и внуками.Яркая загрузка объекта grandchild с Entity Framework 6
public class Parent
{
public int Id {get;set;}
public string Name {get;set;}
public virtual List<Child> Children {get;set;}
public virtual List<Grandchild> Grandchildren {get;set;}
}
public class Child
{
public int Id {get;set;}
public string Name {get;set;}
public virtual Parent Parent {get;set;}
public virtual List<Grandchild> Grandchildren {get;set;}
}
public class Grandchild
{
public int Id {get;set;}
public string Name {get;set;}
public virtual Parent Parent {get;set;}
public virtual Child Child {get;set;}
}
Теперь я использую шаблон репозитория с EF6. Для метода захвата для родителей, у меня есть что-то вроде следующего:
public List<Parent> GrabParent(Expression<Func<Parent, bool>> predicate)
{
return _context.Parents
.Include(a => a.Children)
.Include(a => a.Grandchildren)
.Where(predicate)
.ToList();
}
я использую аналогичный метод, чтобы захватить Grandchild записи:
public List<Grandchild> GrabGrandchildren(Expression<Func<Grandchild, bool>> predicate)
{
return _context.Grandchildren
.Include(a => a.Parent)
.Include(a => a.Child)
.Where(predicate)
.ToList();
}
Теперь, если я вызвать метод GrabParent , Я бы получил список родителей и список каждого из детей. Однако я не смог бы получить доступ к каким-либо записям внуков, несмотря на то, что они были связаны с каждой из записей «Дети», к которым я имею доступ.
Аналогичным образом, если я вызову метод GrabGrandchildren, я смогу получить список внуков и информацию о Ребенке, но я не смог бы получить информацию о Родительском.
Почему это и как я могу получить дополнительную информацию?
Для ядра EF, следует использовать следующий синтаксис: http://stackoverflow.com/a/38741905/1047812 –