【发布时间】:2009-07-11 14:17:45
【问题描述】:
我有一个 3 层应用程序,需要能够根据用户请求进行数据过滤,我正在使用 fluentnhibernate 来管理我的实体的 crud。
我的问题是如何将过滤器从客户端传递到服务器(通过 wcf)。
fn 的过滤器类不可序列化。
有什么办法吗?
【问题讨论】:
-
删除了 WPF 标记,因为问题与该技术无关。
标签: c# wcf fluent-nhibernate filtering
我有一个 3 层应用程序,需要能够根据用户请求进行数据过滤,我正在使用 fluentnhibernate 来管理我的实体的 crud。
我的问题是如何将过滤器从客户端传递到服务器(通过 wcf)。
fn 的过滤器类不可序列化。
有什么办法吗?
【问题讨论】:
标签: c# wcf fluent-nhibernate filtering
简而言之:创建一个包含过滤器规范的可序列化对象。对于简单的过滤器,枚举应该就可以了。然后,在您的 WCF 服务中,将此过滤器规范映射到应用程序的较低层可以理解的内容。
NHibernate(和其他对象关系映射器)与数据库检索相关联。让您的客户端 UI 与您的持久性系统如此紧密地耦合是没有意义的,并且通过尝试使用 NHibernate 过滤器对象,您将把它们用于它们不是为它们设计的用途。
我见过的一些应用程序有多个层,每个层都有自己的数据类型:一层用于 UI,一层用于 UI 上的验证逻辑,一层用于客户端和服务之间的数据传输,一层用于域中的业务逻辑在服务器上,一个用于持久性。这可能看起来很极端,但这意味着对象可以正确反映每个特定关注点的需求。
例如,您可能需要妥协您的数据类型以使您的对象跨服务边界进行序列化。在此处使用与 UI 和业务逻辑层中使用的对象不同的对象可以隐藏任何丑陋。
【讨论】: