【问题标题】:filtering infrastructure for fluentnhibernate over 3 tiers applicationfluentnhibernate 的过滤基础设施超过 3 层应用程序
【发布时间】:2009-07-11 14:17:45
【问题描述】:

我有一个 3 层应用程序,需要能够根据用户请求进行数据过滤,我正在使用 fluentnhibernate 来管理我的实体的 crud。

我的问题是如何将过滤器从客户端传递到服务器(通过 wcf)。

fn 的过滤器类不可序列化。

有什么办法吗?

【问题讨论】:

  • 删除了 WPF 标记,因为问题与该技术无关。

标签: c# wcf fluent-nhibernate filtering


【解决方案1】:

简而言之:创建一个包含过滤器规范的可序列化对象。对于简单的过滤器,枚举应该就可以了。然后,在您的 WCF 服务中,将此过滤器规范映射到应用程序的较低层可以理解的内容。

NHibernate(和其他对象关系映射器)与数据库检索相关联。让您的客户端 UI 与您的持久性系统如此紧密地耦合是没有意义的,并且通过尝试使用 NHibernate 过滤器对象,您将把它们用于它们不是为它们设计的用途。

我见过的一些应用程序有多个层,每个层都有自己的数据类型:一层用于 UI,一层用于 UI 上的验证逻辑,一层用于客户端和服务之间的数据传输,一层用于域中的业务逻辑在服务器上,一个用于持久性。这可能看起来很极端,但这意味着对象可以正确反映每个特定关注点的需求。

例如,您可能需要妥协您的数据类型以使您的对象跨服务边界进行序列化。在此处使用与 UI 和业务逻辑层中使用的对象不同的对象可以隐藏任何丑陋。

【讨论】:

  • 你不觉得使用nhibernate的abstarvct限制更好吗?
  • Chen - 我在使用 Restriction 或 NHibernate 中的任何类时看到的问题是,通过这样做,您会推送 NHibernate 命名空间并引用您的客户端。许多人喜欢将 NHibernate 抽象在他们的服务层后面。在这种情况下,他们必须创建自己的标准对象,然后将该对象映射到 NHibernate Criteria。
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
相关资源
最近更新 更多