Database NHibernate的数据库独立性?
我了解NHibernate如何将持久数据库结构与逻辑分离,以及映射是如何工作的,但你们如何处理数据密集型操作、复杂的选择场景、数据维护等?我们使用存储过程来处理类似的事情,实际上我们有很多存储过程Database NHibernate的数据库独立性?,database,nhibernate,Database,Nhibernate,我了解NHibernate如何将持久数据库结构与逻辑分离,以及映射是如何工作的,但你们如何处理数据密集型操作、复杂的选择场景、数据维护等?我们使用存储过程来处理类似的事情,实际上我们有很多存储过程 现在推荐的做法是什么?每个db后端都有一组单独的存储过程吗 如果您使用的是存储过程,那么是的,您必须将它们移植到每个后端。您可能可以在NHibernate配置中定义参数化sql语句,但仍然很难找到与数据库无关的语句 最简单的方法是让NHibernate生成SQL,然后根据您使用的数据库更改NHiber
现在推荐的做法是什么?每个db后端都有一组单独的存储过程吗 如果您使用的是存储过程,那么是的,您必须将它们移植到每个后端。您可能可以在NHibernate配置中定义参数化sql语句,但仍然很难找到与数据库无关的语句 最简单的方法是让NHibernate生成SQL,然后根据您使用的数据库更改NHibernate配置中的数据库方言。但根据你的情况,我认为答案是你必须移植你的程序
换句话说,使用存储过程剥夺了NHibernate在不同数据库中使用的能力,而无需做一些工作。谢谢。我并不是真的要将我们当前的应用程序移植到NHibernate,在我看来,每个db应用程序最终都会有一些存储过程,这些存储过程在速度上是最好的解决方案,这表明多数据库不是一个简单/廉价的“功能”,尽管中间层(NH)帮助很大。您同意吗?如果您只有少数几个存储过程,并且仍然在大多数sql操作中使用NHibernate,那么我认为迁移到另一个db比在所有操作中使用存储过程更容易。话虽如此,NHibernate所做的远不止生成sql。它跟踪更改、管理对象缓存、对象标识映射、工作单元等。。。这些特性与SQL生成IMHO一样有用,因为手工操作非常困难/繁琐。即使在100%的存储过程环境中,NHibernate仍然具有真正的价值。但是是的,你的进程越多,移动DBs就越不容易。