【发布时间】:2010-12-06 01:13:24
【问题描述】:
在我的应用程序中,我使用我的数据访问层 (DAL) 来生成计划旧 CLR 对象 (POCO),然后发送到我的业务层 (BL)。然后 BL 使用模型视图视图模型 (MVVM) 模式来创建对象以绑定到我的表示层 (PL)。
我想让我的用户能够在列级别过滤数据。例如 http://demos.telerik.com/aspnet-ajax/grid/examples/generalfeatures/filtering/defaultcs.aspx
还有其他执行类似功能的网格控件,但一般来说这是我想要提供的用户体验。
我有一个大型数据集,所以我想在服务器端执行所有分页/排序/过滤。
将分页/排序数据沿 n 层架构发送到我的 DAL 很简单,因此我只会提取我感兴趣的记录。
但我不确定如何将过滤器数据发送到我的 DAL,因为用户可以生成任意长的过滤器表达式。
我的问题是:通过我的 n-tired 应用程序发送用户生成的过滤器表达式有哪些选择。
我的想法:
- 如果我的数据,我的生活会更轻松 结构和我的对象一样 结构也与 视图是我向我的用户展示的。 但是我的数据结构不能 轻松映射到用户视图,例如 许多控制提供者喜欢 在他们的例子中展示。
- 许多网格控件提供程序 提供服务器端功能,但 他们需要一个人使用他们的 Linq 提供者。这将打破许多 我的建筑元素。
- Grid 控件确实会生成一个 表达“字符串”,我可以 传递给我的 DAL 并让它解释 它。然而,这将结合我的 DAL 到这个特定的控制表达式 字符串格式。
- 我可以创建一个“表达式树” 将它作为参数传递给我的 DAL。一世 因此只需要写一个 表达式的 DAL 解释器 树一次。然后对于任何 Grid 控件 我必须生成 适当的表达式树传递 下来。
【问题讨论】:
标签: c# asp.net architecture