0

我是 NHibernate 的新手,正在考虑在一个可以支持不同数据库(如 Oracle、MySQL、SQl Server、DB2 等)的项目中使用它,因为该产品可能会被运送给不同的客户,这些客户可以根据他们的使用不同的数据库选择。但是,不同数据库的架构将保持不变。

我们知道 NHIbernate 为许多数据库提供了开箱即用的支持,我有以下疑问

1)我们是否需要专门安装单独的数据库驱动程序或者它们带有 NHIbernate 设置?我找不到任何带有 NHibernate 安装文件的驱动程序

2)是否有可能仅通过更改配置设置等我的应用程序可以与不同的数据库通信?即,如果将代码发送给可能正在使用 oracle/DB2/SqlServer 数据库等任何一种的客户端,则不需要更改配置设置之外的代码?

4

1 回答 1

0

回答您的问题:

1)不,NHibernate 不提供驱动程序。你必须在别处寻找它们。例如,我将 Npgsql 与 PostgreSQL 一起使用。

2)很可能通过更改驱动程序和连接字符串来开始使用不同的数据库而不会出现重大问题(也可以通过避免数据库特定的映射,例如用于 id 生成的序列或身份)。我最近从 SQL Server 迁移到 PostgreSQL;只是为了让您了解它的进展情况,迁移的产品正在使用 NHibernate 的 HQL、Criteria 和 Linq API 查询超过 70 个表,我们只是遇到了两个数据库中的排序规则不同的问题,这与 NHibernate 无关一点也不。在我看来,只要你坚持使用 NHibernate 进行查询,你就安全了。

由于您将数据库的选择权留给您的客户,因此我建议您仅列出并推荐几个选定的数据库。例如,您的客户可能会遇到错误的驱动程序。

于 2013-08-26T13:07:35.980 回答