EF 4.1 Codefirst WPF Eager加载数据绑定

时间:2011-05-22 19:47:09

标签: wpf data-binding ef-code-first entity-framework-4.1 eager-loading

我首先遇到数据绑定到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; }
}

我是数据绑定Context.As到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 个答案:

答案 0 :(得分:4)

你可以试试这个:

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