EF 4.1 Codefirst WPF привязка загрузки данных - PullRequest
1 голос
/ 22 мая 2011

Сначала возникают проблемы с привязкой данных к коду EF.Мне нужно использовать Eager Loading, но у меня возникают некоторые проблемы с привязкой данных.У меня есть следующие классы:

public class Context : DbContext
{
    DbSet<A> As;
    DbSet<B> Bs;
    DbSet<C> Cs;
}
public class A
{
   public ICollection<B> Bs { get; set; }
   public string Name { get; set; }
}
public class B
{
   public ICollection<C> Cs { get; set; }
   public string Name { get; set; }
}
public class C
{
   public string Name { get; set; }
}

Я контекст привязки данных. Что касается Treeview, используя следующий код:

Context.As.Load();
tvItems.ItemsSource = Context.As.Local;

Это работает, как и ожидалось, однако, это не такавтоматически загружать дочерние свойства Bs и впоследствии Cs.Итак, я обнаружил, что отложенная загрузка может помочь с этим, например так:

Context.As.Load();
tvItems.ItemsSource = Context.As.Include(u=>u.Bs);

Из моего чтения это должно автоматически загрузить по крайней мере первый уровень дочерних свойств.Однако это не приведет к привязке данных, поскольку я не использовал .Local

.Include () возвращает IQueryable, который не поддерживает .Local.Я могу использовать .ToList (), но это не будет автоматически обновляться при добавлении элементов.

Итак, как, черт возьми, я должен это делать?

1 Ответ

4 голосов
/ 23 мая 2011

Вы можете попробовать это:

Context.As.Include(a => a.Bs).Load();
tvItems.ItemsSource = Context.As.Local;
...