【发布时间】:2013-07-30 21:47:51
【问题描述】:
我是 NHibernate 的新手,对 Castle、LinFu 和 Spring 有点困惑。
我了解 NHibernate 有助于 DDD,并且可以使用 xml 或 Fluent NHibernate 将实体映射到数据库。但是想知道 Castle、LinFu 和 Spring 是如何与 NHibernate 关联的。
任何人都可以阐明或指出任何网络链接吗?
【问题讨论】:
标签: nhibernate
我是 NHibernate 的新手,对 Castle、LinFu 和 Spring 有点困惑。
我了解 NHibernate 有助于 DDD,并且可以使用 xml 或 Fluent NHibernate 将实体映射到数据库。但是想知道 Castle、LinFu 和 Spring 是如何与 NHibernate 关联的。
任何人都可以阐明或指出任何网络链接吗?
【问题讨论】:
标签: nhibernate
我个人用过Castle和LinFu。如果我也在使用其他 Castle 组件,例如 Windsor,我倾向于使用 Castle。事实上,Castle 也有一个 NHibernate 设施,这很有帮助。我在没有使用任何其他 Castle 组件时使用了 LinFu。
这篇博文有点旧,但有一些有用的信息: http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx
查看这些问题的答案:
What are the differences between LinFu.DynamicProxy and Castle.DynamicProxy?
NHibernate proxy class, what should I choose?
NHibernate 2.1 Proxy Factory options - what are the differences and which to choose?
【讨论】:
Castle 和其他的被 NH 用来执行依赖注入和类型拦截。例如,NH 能够延迟加载数据,因为它为您自己的类型创建代理并拦截对它们的调用。这样它就可以进行数据库调用并以一种自动的方式填充实例。
他们三个基本上都做同样的事情;由你决定你喜欢哪一个。
【讨论】:
虽然乍一看似乎都可以比较,但由于following issue 与S#arp Arhciture,我个人避免使用Linfu。这一点对我来说已经够糟糕了,以至于我永远都害怕枪。 Castle 供应商从来没有误导过我。
【讨论】:
正如其他答案所指出的,所有这些提供程序都有效。
不管怎样,dynamic-update 映射配置(FluentNHibernate 中的 DynamicUpdate())似乎只适用于 Castle。
【讨论】: