NHibernate映射属性与流畅的NHibernate

时间:2010-05-04 23:49:35

标签: nhibernate fluent-nhibernate nhibernate-mapping

映射属性是否提供与nhib hbm相同的多功能性?你能和FNH一起使用它们来处理FNH还没有像hbm那样做的东西吗?

干杯,
Berryl

通过映射属性,我不是指hbm文件;有明显属性的NHib(或者现在可能是NHib贡献者),你用来装饰你的班级和类属性。我猜这些早期的FNH,但不确定。

6 个答案:

答案 0 :(得分:5)

我个人更喜欢自己创建hbm.xml文件。我曾经使用过Fluent,但我喜欢自己管理这样的事情。但是我没有碰到任何我无法使用Fluent的映射......

据我所知,Fluent nHibernate实际上是根据您的设置在后台创建一个hbm.xml文件,而nHibernate依次使用这些文件...因此,如果Fluent本身正在创建映射,我会认为只是创建手动的hbm.xml在技术上会给你更多的灵活性和访问映射文件的细微差别......

我认为两者都有类似的学习曲线,所以如果您打算学习Fluent本身创建hbm.xml文件,为什么不首先自己学习如何自己创建该死的hbm.xml文件并跳过中间人!

除非您快速连续执行许多项目,否则实际映射数据库的行为只是您在特定项目中所做的实际工作的一部分。

  • Max Schilling

答案 1 :(得分:5)

NHibernate属性确实在FNH之前。除了相对较小的一群顽固坚持者,我真的不认识任何使用它们的人。他们得到了支持,但并不完全友好。如果您喜欢属性,那么Castle ActiveRecord属性比NHibernate核心属性要好得多。

流利的NHibernate可以与其他一切协同工作。它只是将映射注入到NHibernate Configuration实例中,因此您可以在其中放置其他任何内容。 ActiveRecord是一个广泛的解决方案,所以这可能是这个规则的一个例外,自从我使用它已经有一段时间了。

答案 2 :(得分:1)

我从未遇到过Fluent NHibernate无法处理的情况,但也许你正在使用一个不起眼的属性。你需要知道什么特别的东西吗?

答案 3 :(得分:1)

我们在我的业务中使用它们,我有点喜欢它们。

我认为在类定义中直接编写映射非常简洁(我知道 - 每个都是他自己的)。

答案 4 :(得分:1)

我同意这里的大多数评论,Hibernate为您提供了如何为对象实现地图的自由选择。

我不喜欢在我的类上使用NHibernate的属性,因为现在我的类现在有另一个他们不应该知道的依赖。

如果要将数据更改为OODB或仅更改文件,会发生什么情况。这些类将具有冗余映射代码(属性)。在这种情况下,可以说,它更清晰,可以将数据/基础设施层中的映射与存储库实现(假设使用存储库模式)存储在一起

我也同意,他们各自拥有:)

答案 5 :(得分:1)

我试图了解NHibernate 3在属性与注释方面与Hibernate 3相关的位置。我参与了几个Java项目,我们使用Hibernate 3注释进行映射。

非常优雅
  1. 权利明确记录在代码所在的位置
  2. 在单步执行调试器时更容易调试...
  3. 您不必打开单独的文件
  4. 管理的工件越来越少
  5. 编译时检查
  6. intellisense =更少的拼写错误
  7. 无需安装/学习单独的第三方组件(例如FNH)
  8. Hibernate团队投入使注释易于使用和积分
  9. 不确定我是否购买“如果必须更改数据源”或“关注点分离”参数。在实践中,这些论点正在考虑不会发生的“20%”(或更少),或者如果他们这样做会产生边际影响 - 恕我直言的好处要大得多。

    话虽如此,我不清楚的是NHibernate团队是否已经投入足够的资源来确保足够强大的属性以保证使用,或者我最好转移到EF4.x以获得相同的好处......这些是我希望从这篇文章中得到的答案。