【问题标题】:How can I handle property mappings to other domain classes that aren't yet mapped with NHibernate?如何处理到尚未使用 NHibernate 映射的其他域类的属性映射?
【发布时间】:2010-09-08 23:53:01
【问题描述】:

我正在开发一个使用 NHibernate 替换 ADO.NET 数据访问逻辑的项目,在该项目中我们无法一次映射整个域模型。这意味着我们将拥有域类,其属性映射到尚未使用 NHibernate 映射的其他域类。

考虑一个具有 Address 属性的 Person 类(Address 是一个没有 NH 映射的域对象,而 Person 是我正在映射的类)。如何在不为地址创建整个映射的情况下将地址包含在人员映射中?

是否可以从自定义 PropertyAccessor 调用旧版 (ADO.NET) 数据访问逻辑?如果有,合理吗?

*我在另一个问题here 中提出了这个问题,但没有得到回复。我希望得到一个更简洁的问题。

【问题讨论】:

  • 我认为这是一个糟糕的主意,即使它是可能的。这将无法维护。
  • @Peirre:这是个糟糕的主意?试图让 ADO.NET 和 NHibernate 数据访问逻辑共存,或者特别是自定义 PropertyAccessor?

标签: vb.net nhibernate ado.net


【解决方案1】:

在您的示例中,即使您没有为 Address 创建映射文件,它也可能与创建映射文件本身一样多。在转换过程中您可能会考虑其他一些选项,例如使用带有“GetPerson”方法的自定义 DAL,例如,它将 NH 加载人员和 ADO 加载地址。不漂亮也不高效,但封装了工作,所以当你想映射地址时,接口不会改变。话虽如此,有一些选项可以使用 NHibernate.Transform.AliasToBeanResultTransformer 创建自定义数据转换。但最终你必须找到一种很好的方法来分割你的领域模型。使用 DAL 既是一种很好的做法,也可以成为摆脱 ADO 并进入 NH 疯狂的良好桥梁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多