继上一个问题之后:
WPF需要ObservableCollection
来绑定数据。我知道我可以使用构造函数中的列表创建ObservableCollection
,如:
new ObservableCollection(myListName)
但嵌套组是否会绑定到WPF表单,还是我需要将linq查询的结果运行到每个级别ObservableCollections
的预定义类型?
答案 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也可能有所帮助。