为什么流利的NHibernate与hbm XML文件?

时间:2010-01-22 12:51:41

标签: nhibernate fluent-nhibernate nhibernate-mapping

虽然这是一个主观问题,但作为一个新的NHibernate用户,我很好奇为什么会选择Fluent与传统的XML映射。

从我的角度来看,当我第一次使用NHibernate时,我使用了Fluent界面,但遇到了一些障碍,很难找到适合Fluent界面的文档,除了“玩具应用程序”之外,所以我学会了通过XML处理这些。

随着时间的推移,我意识到我在XML方面完成了大部分工作,并意识到它并不像我想象的那样可怕。所以对我个人来说,这是一个文档很差的情况,并没有节省大量的编码时间。

话虽如此,我可能会遗漏一些巨大的优势/劣势,我真的很想听到那些在使用这些工具方面有更多经验的人的意见。

5 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:6)

  • 编译时名称和类型安全
  • 智能感知,可以随时向您显示哪些流畅的方法
  • 可自定义的默认值
  • Automapper

答案 2 :(得分:3)

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

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

作为OO开发人员和偶尔的DB开发人员,我更喜欢以OO方式进行设计。我也相信这使我能够在更高,更强大的抽象层次上工作。

自动化也会对域模型进行持续更改,而不是那么令人生畏。

您的客户刚刚告诉您他们想在数据库中添加四个新列?

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

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:0)

与许多开源软件一样,在许多功能准备就绪之前,这个库可供公众使用。根据您使用的FluentNhib版本,某些功能可能根本没有实现。例如,当我第一次开始使用它时,复合键尚未实现,并且在遇到障碍后我发现了绊脚石。

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