我目前正在使用 C# 中的一个小型 N 层应用程序,它使用 Linq-to-Entities(用于 DB 的 SQL Express 2005)和 WPF,我想知道我的业务逻辑层应该向用户界面提供什么类型的数据收集.
将诸如 datagridviews 之类的表单对象绑定到 IQueryable 是否有缺点(性能、验证等)?我应该填充内存中的 DataTable 并将其传递给 UI 吗?DataContext应该在哪一层初始化?
我目前正在使用 C# 中的一个小型 N 层应用程序,它使用 Linq-to-Entities(用于 DB 的 SQL Express 2005)和 WPF,我想知道我的业务逻辑层应该向用户界面提供什么类型的数据收集.
将诸如 datagridviews 之类的表单对象绑定到 IQueryable 是否有缺点(性能、验证等)?我应该填充内存中的 DataTable 并将其传递给 UI 吗?DataContext应该在哪一层初始化?
要添加到 Marc 的列表中,您可能还想查看ObservableCollection<T>
。
编辑:ObservableCollections 通常用于 MVVM 模式,请在此处阅读以查看一些示例。
你不能正确地绑定到一个IQueryable<T>
(除了在 ASP.NET 中IEnumerable<T>
很好的地方)——理想情况下它需要一个可重复的对象列表。使用DataTable
是违反直觉的。你只需要一个List<T>
/BindingList<T>
等;IE
var qry = ...;
var list = qry.ToList();
现在list
用作绑定源。
IMO,数据上下文将隐藏在存储库接口后面,但您的里程可能会有所不同。