虽然这是一个主观问题,但作为一个新的NHibernate用户,我很好奇为什么会选择Fluent与传统的XML映射。
从我的角度来看,当我第一次使用NHibernate时,我使用了Fluent界面,但遇到了一些障碍,很难找到适合Fluent界面的文档,除了“玩具应用程序”之外,所以我学会了通过XML处理这些。
随着时间的推移,我意识到我在XML方面完成了大部分工作,并意识到它并不像我想象的那样可怕。所以对我个人来说,这是一个文档很差的情况,并没有节省大量的编码时间。
话虽如此,我可能会遗漏一些巨大的优势/劣势,我真的很想听到那些在使用这些工具方面有更多经验的人的意见。
答案 0 :(得分:16)
编译时安全性和重构(重命名类,属性)是您从流畅映射中获得的好处之一。使用一种语言(C#或VB.NET)编写映射,程序代码和数据访问是另一个好处。
答案 1 :(得分:6)
答案 2 :(得分:3)
对我来说,Fluent的一大特色就是Automapper。
我可以使用POCO类(大多数)定义我的域模型,而不必担心它们如何映射到关系数据库中的表的令人讨厌的细节。
作为OO开发人员和偶尔的DB开发人员,我更喜欢以OO方式进行设计。我也相信这使我能够在更高,更强大的抽象层次上工作。
自动化也会对域模型进行持续更改,而不是那么令人生畏。
您的客户刚刚告诉您他们想在数据库中添加四个新列?
没问题 - 向关联的POCO(4行代码)添加四个新属性,并重新映射。
在不断变化的要求中承担了很多痛苦,这些要求在很多项目中都是生活中的事实。
答案 3 :(得分:2)
我将添加一个对于基于公共代码库制作自定义功能非常重要的原因:
通过流畅,您可以覆盖映射以添加新字段。对现有(超类)映射的更改会自动合并到自定义/分支中。我被迫使用Fluent来避免为每个客户维护一个单独的.hbm / xml文件。很高兴我做了:))
答案 4 :(得分:0)
与许多开源软件一样,在许多功能准备就绪之前,这个库可供公众使用。根据您使用的FluentNhib版本,某些功能可能根本没有实现。例如,当我第一次开始使用它时,复合键尚未实现,并且在遇到障碍后我发现了绊脚石。
但该产品已经发展成为一个非常好的工具。与xml相比,它具有相当完整的功能,并提供了其他人已经概述的所有好处。