NHibernate还是FluentNHibernate还是ActiveRecord?

NHibernate还是FluentNHibernate还是ActiveRecord?,nhibernate,orm,activerecord,fluent-nhibernate,Nhibernate,Orm,Activerecord,Fluent Nhibernate,我正处于将CSharp类映射到数据库表的阶段。在与其他工具进行比较之后,我决定使用NHibernate作为我的ORM工具。我以前从未和NHibernate一起做过一个真正的项目,现在正在考虑地图的替代方案 ActiveRecord:根据该项目的网站,使用ActiveRecord可以显著提高生产率。但是,我不喜欢向CSharp类添加属性的想法。毕竟,我的类不应该有任何数据库关系的知识。通过使用ActiveRecord,我的类将很好地绑定到ActiveRecord,如果我将来想切换到DAO层实现,这

我正处于将CSharp类映射到数据库表的阶段。在与其他工具进行比较之后,我决定使用NHibernate作为我的ORM工具。我以前从未和NHibernate一起做过一个真正的项目,现在正在考虑地图的替代方案

ActiveRecord:根据该项目的网站,使用ActiveRecord可以显著提高生产率。但是,我不喜欢向CSharp类添加属性的想法。毕竟,我的类不应该有任何数据库关系的知识。通过使用ActiveRecord,我的类将很好地绑定到ActiveRecord,如果我将来想切换到DAO层实现,这将给我带来困难

FluentNHibernate:FluentNHibernate是我开始映射时的第一次尝试。但我对这种方法也有一些问题。1) 我不喜欢将映射策略编译为二进制文件。我希望能够通过修改xml文件来更改映射。2) 氟纤维酸盐的成熟度。NHibernate已经存在很长一段时间了,并且有很多用户,所以我对它的成熟度很满意。相比之下,FluentNhibernate相对年轻,没有经过那么多用户的测试。尽管我可以深入到源代码中来解决出现的任何问题,但我对接触低级别实现的技能感到不舒服。3) FluentNHibernate的文档可用性远远高于NHibernate。当我遇到困难时,我想有个地方去

NHibernate:目前,我正在使用裸NHibernate xml进行映射。老实说,使用XML让我非常头疼。从字面上说,我必须让自己远离那种一天几次扔掉.hbm.xml文件、抓取ActiveRecord或FluentNHibernate的冲动

所以,我的两难处境是:我是否应该全心全意地“把这该死的事情做完!”;或者,我是否应该遵循“良好实践指南”,现在就忍受痛苦,然后在以后获得相对轻松的时间


有什么意见吗?

请注意,与ORM相关的任何类都不必被视为“业务对象”类或公开给您的UI。它们应该被视为数据层的一部分。这种模式并不是ActiveRecord所独有的。通常,您希望您的业务层尽可能少地了解以下事实,即它下面有一个ORM,并且您不希望您的UI了解您的数据层。你也要考虑。

Fluent NHibernate解决了弱类型XML的问题,这种弱类型XML很容易发生重构错误

虽然采用类似ActiveRecord的东西可能有缺点,但在您的情况下,它似乎是一个合适的解决方案


使用.hbm.xml文件的最佳理由是,如果您打算从数据库中编码生成它们(使用类似的方法)。手工编写.hbm.xml文件很少是最好的选择。

谢谢您的回答。现在我将使用ActiveRecord。