我是NHibernate的新手,并且正在考虑在一个可以支持不同数据库的项目中使用它(如Oracle,MySQL,SQl Server,DB2等),因为这个产品可能会被运送到可能使用不同数据库的不同客户端根据他们的选择。但是,不同数据库的模式将保持不变。
正如我们所知,NHIbernate为许多数据库提供了开箱即用的支持,我对此有疑问
1)我们是否需要专门安装各个数据库驱动程序,或者它们是否附带NHIbernate设置?我找不到NHibernate安装文件的任何驱动程序
2)是否可以通过仅更改配置设置等,我的应用程序可以与不同的数据库通信?如果将代码发送给可能正在使用oracle / DB2 / SqlServer数据库等任何一个的客户端,那么除了配置设置之外,不需要更改代码吗?
答案 0 :(得分:0)
回答你的问题:
1)不,NHibernate不提供驱动程序。你必须在其他地方寻找它们。例如,我使用Npgsql和PostgreSQL。
2)通过更改驱动程序和连接字符串,可以开始使用不同的数据库而不会出现重大问题(也可以通过避免数据库特定的映射,例如序列或ID生成的标识)。我最近从SQL Server迁移到PostgreSQL;只是因为你有一个关于它如何运行的概念,迁移的产品使用NHibernate的HQL,Criteria和Linq API查询超过70个表,我们只有两个数据库中的排序规则存在问题,这与NHibernate无关一点都不在我看来,只要你坚持NHibernate进行查询,你就会安全。
由于您将数据库的选择留给了客户端,我建议您列出并仅推荐几个选择的数据库。例如,您的客户可能遇到了一个糟糕的驱动程序。