【问题标题】:NHibernate Driver and Sql Dialect for SQL Server 2014SQL Server 2014 的 NHibernate 驱动程序和 Sql 方言
【发布时间】:2015-01-12 14:00:16
【问题描述】:

我们有一个在 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. 有没有我忽略的未来可能出现的并发症?

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

【问题讨论】:

  • 关键是 SQL 2008 中的语法在 2008+ 中仍受支持。除非这会改变......它会工作。但可以肯定的是,您没有使用最新的功能。例如。方言 2012 有更好(更易读)的分页...所以,尝试将您的 NH 升级到 4.0+ - 只有好处,没有那么多问题...
  • 简短回答:MsSql2008Dialect 是 2012 年方言的子集

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2022-08-19
    相关资源
    最近更新 更多