2015-01-12 20 views
5

実行中のアプリケーションがあります。NHibernate.3.3.3.4001です。私は、アプリケーションはこれで正常に動作することをテストしているSQL Server 2014用NHibernateドライバとSQL Dialect

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

databaseConfiguration = databaseConfiguration.Driver<Sql2008ClientDriver>(); 

我々は2014年

以前R2 SQL ServerにSQL Server 2008のアップグレードすることを決めた、私たちは以下の流暢な設定を持っていました私がSQL Server 2014データベースのインスタンスに接続するときの構成。

  1. それはどのように 2014データベースに接続している間、私は2008ドライバと方言を使用することが可能ですか?

  2. 今後発生する可能性のある合併症はありますか?

  3. NHibernateの上位バージョンに2014年のドライバと方言がサポートされていますか?

+0

SQL 2008で動作する構文は、2008年以降も引き続きサポートされています。それが変わらない限り...それはうまくいくでしょう。しかし、確実にあなたは最新の機能を使用していません。例えば。 Dialect 2012は、より良い(読みやすい)ページングを提供しています...したがって、あなたのNHを4.0+にアップグレードしようとしてください - メリットだけでなく、それほど多くの問題はありません... –

+0

短い答え:MsSql2008Dialectは2012年の方言のサブセットです – Firo

答えて

7

次の機能は、使用されている方言によって異なります。

  • ページングは​​、MSSQL 2012以降のネイティブのSKIP/TAKE機能を使用する代わりに、返されたすべての行の番号を生成するサブクエリによってエミュレートされます。これは、ネイティブ機能の実行方法を実行しないフォールバックです。
  • シーケンス、MSSQL 2012以降には、Oracleと同じ機能が追加されました。増加する数字を生成する名前付きシーケンスを作成できます。これは、NHibernateの "Enhanced"ジェネレータが、挿入された行のためのPKを生成するために使用されます。

質問#1:MSSQL 2008には機能が少なく、MSSQL 2012には新機能のみが追加されているため、古いドライバを使用できます。

質問#2:あなたは上記のいくつかのオプトマイゼーションを失っています。

質問#3:NHibernate 4.0にMSSQL 2012が追加されました。現在、MSSQL 2014の方言は存在しません。これは大きな問題ではありませんが、MSSQL 2014の機能の多くは、OR-Mapperにとって無関係/透過的です。