2010-01-22 44 views
12

虽然这是一个主观的问题,但作为一个新的NHibernate用户,我很好奇为什么会选择Fluent vs传统的XML映射。从我的角度来看,当我第一次使用NHibernate时,我使用了Fluent界面,但遇到了一些障碍,并且很难为Fluent界面找到足够的文档来处理“玩具应用程序”以外的任何内容,所以我学会了通过XML处理这些内容。随着时间的推移,我意识到我在XML方面做了大部分工作,并且意识到它并不像我想象的那么可怕。所以对我个人来说,这是一个糟糕的文档,没有看到在编码时间上的显着节省。为什么连贯NHibernate与HBM XML文件?

话虽如此,我可能会有一些巨大的优势/缺点,我很想听听一些有更多使用这些工具经验的人的意见。

回答

16

编译时安全性和重构(重命名类,属性)是您从流利映射中获得的好处之一。使用一种语言(C#或VB.NET)编写映射,程序代码和数据访问是另一个好处。

+0

我其实有一个问题。我记得如果我的映射文件关闭,Fluent会抛出一个很好的编译错误 - 但是如果我错误地输入了一个表列,或者我会像现在一样调试异常,当我的hbm XML爆炸时,它会有帮助吗? 感谢您的答案btw! – 2010-01-22 13:06:13

+0

如果您输错了表名或列,没有什么可以节省您的。 – 2010-01-22 13:44:47

6
  • 编译时的名字 - 和类型安全
  • 智能感知显示出哪些流利的方法都可以在任何时候
  • 定制默认
  • Automapper
+0

您在XML中使用NHibernate XSD架构获得智能感知。 – 2010-01-22 13:50:01

+0

您可以获得基于hibernate架构的智能感知,但不基于您的对象模型。 – yfeldblum 2010-01-22 19:25:58

+1

+1为自动映射,其中IMO是唯一真正的“扣篮”。其他好处很好,但不是令人兴奋。 – Aaronaught 2010-01-22 22:20:21

0

像很多开放该软件库在大量功能准备就绪之前就已向公众开放。根据您使用的FluentNhib的版本,某些功能可能根本没有实施。例如,当我第一次开始使用它时,组合键还没有实现,我在绊脚石之后发现了绊脚石。

但是该产品已经发展成为一个相当不错的工具。与xml相比,它功能非常完整,并且提供了其他人已经概述的所有好处。

3

对我来说,Fluent的一大特色就是Automapper。

我可以使用POCO类(大部分)定义我的领域模型,而不用担心他们将如何映射到关系数据库中的表的令人讨厌的细节。

作为一个很长时间的面向对象开发人员和偶尔的数据库开发人员,我更愿意以面向对象的方式进行设计。我也相信这可以让我在更高,更强大的抽象层次上工作。

自动绘图还使得对领域模型的更改变得更加困难。

你的客户刚刚在最后一刻告诉你他们想向数据库添加四列新列?

没问题 - 向关联的POCO(4行代码)添加四个新属性,然后重新映射。

在不断变化的需求中承受很多痛苦,这些需求在很多项目中都是生活中的事实。

2

我将添加一个原因是制造基于公共代码库自定义功能非常重要:

用流利的可以覆盖映射添加一个新的领域。对现有(超类)映射的更改会自动合并到定制/分支中。我被迫使用Fluent来避免为每个客户维护一个单独的.hbm/xml文件。很高兴我没有:)

+0

对不起,但你能澄清这是如何比更新xml更好? – ArtB 2012-11-13 14:47:34

相关问题