我首先遇到数据绑定到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(),但是当我添加项目时,这不会自动更新。
那么,我该怎么做呢?
答案 0 :(得分:4)
你可以试试这个:
Context.As.Include(a => a.Bs).Load();
tvItems.ItemsSource = Context.As.Local;