sql-server - SQL Server 2014 的 NHibernate 驱动程序和 Sql 方言

标签 sql-server nhibernate fluent-nhibernate sql-server-2014

我们有一个在 NHibernate.3.3.3.4001 上运行的应用程序。

我们决定从 SQL Server 2008 R2 升级到 SQL Server 2014。

之前,我们有以下流畅的配置:

var databaseConfiguration = MsSqlConfiguration.MsSql2008.ConnectionString(connectionString)
            .Dialect<MsSql2008Dialect>();

databaseConfiguration = databaseConfiguration.Driver<Sql2008ClientDriver>();

我已经测试过,当我连接到 SQL Server 2014 数据库的实例时,应用程序可以在此配置下正常工作。

  1. 我怎么可能在使用 2008 驱动程序和方言的同时 连接到 2014 年数据库?

  2. 是否有任何我忽略的 future 可能出现的并发症?

  3. 更高版本的 NHibernate 是否支持 2014 驱动程序和方言?

最佳答案

以下功能取决于所使用的方言。

  • 分页不是使用 MSSQL 2012 及更高版本具有的 native SKIP/TAKE 功能,而是通过子查询来模拟,该子查询为所有返回的行生成数字。这是一个后备方案,其执行方式与 native 功能不同。
  • 序列、MSSQL 2012 及更高版本现在具有与 Oracle 相同的功能。您可以创建一个生成递增数字的命名序列。 NHibernate 的“增强型”生成器使用它来为插入的行生成 PK。

问题#1:由于 MSSQL 2008 的功能较少,而 MSSQL 2012 仅添加了新功能,因此可以使用旧的驱动程序。

问题#2:您失去了我上面描述的一些优化。

问题#3:NHibernate 4.0 添加了 MSSQL 2012,目前不存在 MSSQL 2014 的方言。这绝对不是一个大问题,因为许多 MSSQL 2014 功能对于 OR-Mapper 来说是不相关/透明的。

关于sql-server - SQL Server 2014 的 NHibernate 驱动程序和 Sql 方言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27903691/

相关文章:

sql - 提取名字和姓氏

nhibernate - 这是将 NHibernate Isession 作为 PerWebRequest 处理的好解决方案吗

c# - 如何将 CaSTLe Activerecord 转换为纯 NHibernate 或 Fluent NHibernate?

nhibernate - 使用 Fluent NHibernate 删除一对一关系中的实体时出现级联问题

sql-server - SQL SERVER sp_executesql ')' 附近的语法不正确

SQL Server - 根据另一个表中的类别记录唯一更新一个表

sql - NHibernate 是否支持从 SQL View 映射?

nhibernate - 如何在 NHibernate >= 3.2 中配置 NHibernate 的二级缓存?

sql-server - 如何在SSRS 2008 R2的报告正文中显示页码?

database - NHibernate:使用拦截器或触发器审计日志记录?