31

我来自我的 ORM 工具的实体框架和 LLBL 背景。

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

使用 Fluent NHibernate 进行映射和 NHibernate 中的“按代码映射”有什么区别?有偏好吗?

4

3 回答 3

22

流畅的氨

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

对比

NH 的新代码映射

它是基于 ConfORM 库的无 XML 映射解决方案,自 3.2 起成为 NHibernate 不可或缺的一部分。它的 API 试图符合 XML 命名和结构。映射方法的构建方式有一个严格的约定。它的名称几乎总是等于 XML 元素的名称。

于 2012-11-20T19:33:54.957 回答
12

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

从 3.2 开始,我相信(也许是 3.0)NHibernate 现在有“代码映射”。与 Fluent NHibernate 相比,它的优势在于它不需要额外的库,并且由与 NHibernate 相同的团队支持。另一方面,Fluent NHibernate 更成熟一些(据我所知),可以支持更广泛的映射功能。

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

于 2012-11-20T19:35:48.040 回答
3

我知道这篇文章已经过时了,但是对于其他对此感兴趣的人,我强烈建议您阅读此博客。它让我很清楚,它甚至还为您提供了两种方法之间的比较。

http://notherdev.blogspot.de/2012/01/nhibernates-mapping-by-code-first.html

于 2015-02-23T10:05:04.607 回答