NHibernate中的多个数据库驱动程序

NHibernate中的多个数据库驱动程序,nhibernate,multiple-databases,Nhibernate,Multiple Databases,我是NHibernate的新手,我想在一个项目中使用它,该项目可以支持不同的数据库,如Oracle、MySQL、SQl Server、DB2等,因为该产品可能会发送给不同的客户,他们可以根据自己的选择使用不同的数据库。然而,不同数据库的模式将保持不变 正如我们所知,NHIbernate为许多数据库提供开箱即用的支持,我有以下疑问 1) 我们是否需要专门安装单个数据库驱动程序,还是随NHIbernate安装程序一起安装?我找不到任何具有NHibernate安装文件的驱动程序 2) 是否仅通过更改配

我是NHibernate的新手,我想在一个项目中使用它,该项目可以支持不同的数据库,如Oracle、MySQL、SQl Server、DB2等,因为该产品可能会发送给不同的客户,他们可以根据自己的选择使用不同的数据库。然而,不同数据库的模式将保持不变

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

1) 我们是否需要专门安装单个数据库驱动程序,还是随NHIbernate安装程序一起安装?我找不到任何具有NHibernate安装文件的驱动程序


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

回答您的问题:

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

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


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

只是一个查询,那么为什么我们说NHibernate开箱即用支持上述数据库呢。据说EF开箱即用仅支持SQl Server,而NHibernate支持数据库,如Oracle、MySQL、SQl Server和DB2。驱动程序需要实现特定于实体框架的某些功能才能使用它。NHibernate需要驱动程序来实现更基本的ADO.NET功能。两者都可以用于许多数据库,但驱动程序必须更“高级”一点才能用于实体框架。如果需要,请检查EF兼容的驱动程序。查看
NHibernate.dialogue
NHibernate.Driver
命名空间中的类。另见。它是“开箱即用”的,因为您无需编写任何代码即可使其工作。显然,必须引用适当的ADO.NET连接类(也称为驱动程序)。如果这些类可用,NHibernate将能够使用它们。