26

我来自我的ORM工具的实体框架和LLBL背景。FluentNHibernate和NHibernate的“按代码映射”之间的区别

我被要求建立一个基于NHibernate的新系统。我从来没有这样做过,所以我用新鲜的眼光来看待它。

在NHibernate中映射与Fluent NHibernate和“通过代码映射”有什么区别?有偏好吗?

+2

这不是太有建设性我相信。你为什么不学习NH,并亲自看看有什么不同? **顺便说一下,我在学习java并且拥有C#背景,有什么区别? ... ** – gdoron

+2

我相信他指的是具体的映射。 +1来抵消downvote并编辑问题更加清晰。 – Origin

+4

我可以看到这将如何混淆到新来者,但像@Origin在他的回答中所述,以及在他的回答中暗示了什么dotjoe,与项目年龄相比,“按代码映射”功能相对较新。对于一个新手来说,我建议仅仅使用NHibernate中内置的新的“按代码映射”。我自己会继续坚持使用Fluent NHibenate,因为我有很多目前使用它的代码,而且它的语法对我个人来说更有意义。 –

回答

19

Fluent NH

功能NHibernate提供了NHibernate的标准XML 映射文件的替代品。您不用编写XML文档,而是使用强类型的C#代码编写映射 。这允许轻松重构,提高了可读性和更简洁的代码。

NH's new mapping by code

它是一个XML少映射解决方案是自3.2 NHibernate的不可分割的一部分,是根据符合库。其API尝试 符合XML命名和结构。在 中有一个强大的约定如何构建映射方法。其名称几乎总是等于 到XML元素名称。

10

其中一些是首选项,其中一些是现有的代码库。有一段时间,NHibernate没有任何内置的非XML映射选项。有几个解决方案可以解决这个问题 - 例如conform,Fluent NHibernate和其他我可能不知道的。

从3.2我相信(也许3.0)NHibernate现在有“映射的代码”。与Fluent NHibernate相比,这样做的好处是它不需要额外的库,并且由NHibernate支持。另一方面,Fluent NHibernate更成熟一些(从我听说的),并且可以支持更广泛的映射函数。

我还提到了“现有的代码库”。很明显,如果你有一个已经与Fluent NHibernate映射的项目,最好继续使用它。如果你开始新鲜,也许值得尝试使用内置的“按代码映射”