Linq查询EF 4.1数据,嵌套列表绑定到WPF表单

时间:2011-11-13 13:07:48

标签: wpf linq entity-framework-4 linq-to-entities

继上一个问题之后:

  

Linq query for EF 4.1 data with nested lists

WPF需要ObservableCollection来绑定数据。我知道我可以使用构造函数中的列表创建ObservableCollection,如:

new ObservableCollection(myListName)

但嵌套组是否会绑定到WPF表单,还是我需要将linq查询的结果运行到每个级别ObservableCollections的预定义类型?

1 个答案:

答案 0 :(得分:1)

您可以在模型类中直接使用ObservableCollection<School>ObservableCollection<Class>代替IList<School>IList<Class>。这样,您可以确保在使用预先加载或延迟加载时,实体框架将集合实现为ObservableCollection<T>。使用IList<T> EF会创建List<T>作为具体类型,而不是ObservableCollection<T>

如果导航属性标记为virtual,则表示您正在使用延迟加载,这意味着只要您的WPF表单想要访问属性,EF就会自动加载集合。 (不得以上下文为准。)

如果要在一个查询中一次加载所有集合,可以使用预先加载:

var students = new ObservableCollection<Student>(
    context.Students.Include(s => s.Schools.Select(sc => sc.Classes)));

This blog post也可能有所帮助。