你能比较一下Fluent NHibernate和xml配置映射文件吗?
本文关键字:配置 xml 映射 文件 NHibernate Fluent 比较 一下 | 更新日期: 2023-09-27 18:02:10
如果我需要在Fluent NHibernate和NHibernate的标准xml映射文件之间进行选择,我应该考虑什么?
你能比较一下我应该注意的显著差异吗?
有几件事,正如提到的,这可能是一个重复的问题,我能想到的主要问题是,你可以改变xml文件,而不需要重新编译代码,但你不能改变映射在fluent没有重新编译的东西,因为他们的本质是编译。
也就是说你可以有一个映射程序集然后修补它。显然,无论您做了什么更改,都需要通过集成测试来运行。
除此之外,Fluent Nhibernate可能会让Nhibernate用户感到困惑,因为他们把一些术语和自己的术语混在一起,所以我总是说,你应该从XML文件映射开始,直到你完全理解是怎么回事,然后迁移到Fluent,如果你不需要在不重新编译的情况下改变映射,因为它读起来更好。
但是,不要忘记你在上面添加了一个抽象层,它有自己的怪癖,这可以使调试变得有趣。
注意:这是一个比较主观的回答。
实际上还有第三个选项是你错过的。NHibernate 3.2自带了自己的代码映射语法。
http://nhforge.org/blogs/nhibernate/archive/2011/09/05/using-nh3-2-mapping-by-code-for-automatic-mapping.aspx我个人不喜欢这种语法,我是一个流利的NHibernate粉丝,它对我很有用。
我认为唯一真正需要考虑的是krystan已经提到的,即命名差异。
我个人放弃了XML映射,直到Fluent NHibernate出来才重新开始使用NHibernate。
我认为你不需要了解任何关于XML映射的知识,如果你想学习XML映射,你可以导出Fluent映射并查看它们。但实际上,流畅映射是非常简单的。
来自Fluent NHibernate的大多数问题都来自于试图使用自动映射,它映射了很多假设,如果你计划生成DB模式,这很好,但如果你已经有了一个现有的模式,最好显式地映射它们。我总是明确地写我的地图