2015-09-30 3 views
0

Модель:Загрузка внучат объект в коллекции детской, EF

public class Parent 
    { 
     public int Id { get; set; } 
     public ICollection<Child> Children { get; set; } 
    } 

    public class Child 
    { 
     public int Id { get; set; } 
     public int IdGrandChild { get; set; } 
     public virtual Grandchild Grandchild { get; set; } 
    } 

    public class Grandchild 
    { 
     public int Id { get; set; } 
    } 

У меня есть существующий родительский объект с коллекцией детей. После некоторых операций я хочу, чтобы загрузить новый добавленные ребенок объекты в коллекцию Родителя из базы данных, как этого

_context.Entry(parent).Collection(f => f.Children).Load(); 

Но когда я делаю это так, объект Внук во все добавляемом элементе коллекции является недействительным. Я также попытался включить внука таким образом, но все же объект Grandchild имеет значение NULL.

_context.Entry(parent).Collection(f => f.Children).Query().Include(c => c.Grandchild).Load(); 

Как правильно загрузить новые предметы в Детскую коллекцию родителей, включая объекты Grandchild?

EDIT: Я не знаю, почему этот вопрос был отмечен как дубликат? Моя проблема: у меня уже есть (загруженный/отслеживаемый) родительский объект в одном экземпляре контекста (форме), а затем в другом экземпляре контекста (формы). Я модифицировал сборку дочернего элемента объекта (добавьте или удалите дочерний элемент). Наконец, я хочу загрузить эти новые добавленные записи в родительский набор сущностей в первом экземпляре контекста, используя один из этих ранее написанных методов, но после этого загружается только что добавленный объект, но их внуки имеют значения NULL. Я не знаю, как правильно загружать эти новые дочерние объекты в существующий (отслеживаемый) родительский объект без получения нулей.

+0

является [это] (http://stackoverflow.com/ questions/10822656/entity-framework-include-multiple-levels-of-properties), что вы ищете? – Robert

+0

http://stackoverflow.com/questions/10822656/entity-framework-include-multiple-levels-of-properties – Moho

+0

Как я могу использовать это на уже отслеживаемом объекте? _context.Entry (родитель). ??? –

ответ

0

Я обычно использую следующие (заменяется без нагрузки)

Parent parent = _context.Parent.Include(p => p.Children.Grandchild).FirstOrDefault(); 

и если мой Внук был сборник, я хотел бы использовать

Parent parent = _context.Parent.Include(p => p.Children.Select(c => c.Grandchild).FirstOrDefault(); 
+1

Что делать, если дети равны нулю? Как EF справляется с этим? – Sam

Смежные вопросы