回答
流利NHIbernate坐在NHibernate的顶部,所以它不是真正的两个选择之间。如果你打算使用NHibernate,CHOOSE在它上面使用Fluent NH来节省你大量的工作量。
功能NHibernate是真棒,没有它,我不会使用NHibernate的。您可以流利地映射所有实体(为您提供编译时间检查和自动化测试支持),而不必维护繁琐的xml文件并记住它们的语法/ DTD。
它还可以自动在您的实体基于默认和/或自己的自定义映射约定。
只要使用它!
是的,抱歉,我应该稍微区别一下我的问题;)谢谢你的回答。 – UpTheCreek 2009-08-29 09:50:40
是的,我不能同意更多。我们使用了Fluent和Rhino以及Geo库。我们偶尔遇到版本差异! – Perhentian 2009-10-20 10:43:30
我第二。我刚开始使用流利NHibernate,我不(不会)回头。映射你的课程是多么容易,真是太神奇了。 – Siewers 2010-04-28 06:44:58
使用功能NHibernate与NHibernate一起的好处是,你得到编译时错误,如果你已经搞砸了你的映射,而不是运行时错误。在重构代码时,您还可以获得更好的体验,因为在重命名属性或其他内容时,映射会保持最新状态,而不必记住手动修改XML映射文件。
功能NHibernate的最大缺点是,它仍处于发展的相当早阶段,有相当重大更改为框架的发展进步的一大隐患。
根据我的经验,由于我遇到的使用FluentNHibernate的映射错误导致的大部分错误都是在运行时发生的,因为NHibernate首次在应用程序中使用。只有简单的重构/类型不匹配/ mispellings /等。会导致编译时错误。 – 2010-02-25 21:44:28
个人而言,我还没有真正得到多少进入功能NHibernate,因为我舒服的映射文件。使用visual studio创建映射文件是一件轻而易举的事情,您可以为xml文件设置架构,从而为映射文件提供智能感知。我同意编译时语法检查对于使用fluent-nhibernate是一个优势,但是当我已经熟悉XML映射时,我很努力学习流利的API。也许我应该只得到了我的lethergy并且已经学习它... :-)
我肯定会说去用流利的-NHibernate的。请注意,它可能不一定像您希望的那样顺利。
关于版本依赖
- 升级到FNH的新版本时,我有一个“反向”的依赖问题,要求我升级到NH的新版本(2.0到2.1,我认为) 。这对我来说不是一个主要问题。
- 我刚刚(今天早上)将NH 2.1.1放入FNH 1.0 RTM(这是2.1.0发行版),没有任何戏剧(还)。
编辑:既然写这篇文章,我不认为这是一个真正的问题了
映射支持FNH大幅成熟到 - 些映射是没有可能的功能NHibernate。然而,这并不是避免FNH的原因,因为混合的fluent-xml映射允许您在流畅无法映射的情况下对传统xml进行回退(尽管这只针对每个类的粒度)。映射的例子:复合复杂因子。从它的声音,你将同时学习FNH和NH。对于大多数相当简单的应用程序来说,这很好 - 事实上FNH通常非常好,所以您需要对hbm.xml映射知之甚少。但是如果你想要去做一些相当复杂的事情,那么它第一次很少会工作,而且你还想知道它是PEBKAC,流利还是NH问题。比我希望的更多的是,我最终编写了传统的xml映射(当然,无论如何你都这样做了,但最好不要花费比先行流利的更多的努力)。
感谢你的想法 - 我在第3点听到你的意见。最后我和FNH一起去了,但我也在做一个小项目,非常流利 - 这真是个好主意,因为我觉得我学到了很多东西关于NH,并且实际上知道发生了什么感觉更舒服。 (顺便说一句,我必须查看PEBKAC,但是 - 这是我的大部分问题源于其中) – UpTheCreek 2009-11-13 11:28:41
只是FYI,现在支持最新版本的字段。 – 2010-05-17 14:51:17
您可以始终从流畅的映射中生成hbm.xml并手动编辑它们。不需要手写全部 – Firo 2012-11-08 06:40:29
功能NHibernate是真的结束了NHibernate的一个很好的包装。管理Fluent中的映射比xml映射更好。随着您对Fluent的发展变得越来越快...
如果您使用Entity Developer创建实体和数据库模式,那么最好。
- 1. 流利的NHibernate与NHibernate 3.0
- 2. 流利Nhibernate和Nhibernate 2.1.0.1003
- 3. NHibernate /流利NHibernate映射
- 4. C#流利nhibernate
- 5. C#流利nhibernate
- 6. LLBLGEN - 流利NHibernate
- 7. 流利NHibernate的 - IndexOutOfRange
- 8. NHibernate /流利NHibernate的动态列映射
- 9. NHibernate的T4模板? - 不流利NHibernate
- 10. NHibernate +流利NHibernate的+甲骨文索引
- 11. 流利的NHibernate/NHibernate继承问题
- 12. ValueObject在NHibernate /流利NHibernate的持久性
- 13. 流利Nhibernate映射
- 14. 从appSettings流利NHibernate
- 15. 流利NHibernate和log4net
- 16. 流利NHibernate入门
- 17. 流利NHibernate与SQLite
- 18. 流利NHibernate和DynamicUpdate
- 19. ManyToManyMapping与流利Nhibernate
- 20. 流利Nhibernate映射
- 21. 流利的NHibernate或NHibernate复杂的关系数据库
- 22. 没有Persister for ... {SUBCLASS} NHibernate与流利NHibernate
- 23. 在NHibernate 3.3中使用流利NHibernate 3.3
- 24. Cascade.SaveOrUpdate(SQLite的)流利,NHibernate的
- 25. 流利的nhibernate一对多
- 26. C++/CLI中流利的nhibernate
- 27. 一对一流利的nhibernate?
- 28. 流利,NHibernate的,并且PredicateBuilder
- 29. 流利的NHibernate映射
- 30. NHibernate的流利组由
hbm.xml文件在NHibernate中用于映射,但流利的NHibernate用C#代码替换它。很容易发现问题和维护。 – 2012-11-29 13:40:20
3年前我问过这个问题,这个月它会关闭吗?呵呵。 – UpTheCreek 2012-11-29 14:19:25