2015-01-12 13 views
5

Abbiamo un'applicazione in esecuzione su NHibernate.3.3.3.4001.NHibernate Driver e Sql Dialect per SQL Server 2014

abbiamo deciso di eseguire l'aggiornamento da SQL Server 2008 R2 di SQL Server 2014.

In precedenza, abbiamo avuto la seguente configurazione fluente:

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

databaseConfiguration = databaseConfiguration.Driver<Sql2008ClientDriver>(); 

ho provato che l'applicazione funziona bene con questo configurazione quando mi collego a un'istanza di un database SQL Server 2014.

  1. Come è possibile che io possa utilizzare il driver 2008 e dialetto, mentre connessione a un database 2014?

  2. C'è qualche complicazione che potrebbe sorgere in futuro che sto trascurando?

  3. C'è supporto per driver 2014 e dialetto in una versione superiore di NHibernate?

+0

Il punto è che la sintassi che funziona in SQL 2008 è ancora supportata nel 2008+. A meno che non cambierà ... funzionerà. Ma di sicuro non stai usando le ultime funzionalità. Per esempio. Dialect 2012 ha un paging migliore (più leggibile) sul posto ... quindi, prova ad aggiornare il tuo NH a 4.0+ - ci sono solo vantaggi e non così tanti problemi ... –

+0

risposta breve: MsSql2008Dialect è un sottoinsieme del dialetto 2012 – Firo

risposta

7

Le seguenti caratteristiche dipendono dal dialetto utilizzato.

  • Paging, invece di utilizzare lo SKIP nativo/TAKE-Caratteristica che MSSQL 2012 e ha verso l'alto, il paging è emulatd da una subquery che genera i numeri per tutto il rinviato righe. Questo è un fallback che non funziona come fa la funzione nativa.
  • Sequenze, MSSQL 2012 e versioni successive ha ora la stessa funzionalità di Oracle. È possibile creare una sequenza denominata che generi numeri incrementali. Questo è usato dai Generatori "Avanzati" di NHibernate per generare un PK per le righe inserite.

Domanda n. 1: Poiché MSSQL 2008 ha meno funzioni e MSSQL 2012 aggiunge solo nuove funzionalità, è possibile utilizzare il driver più vecchio.

Domanda n. 2: si perdono alcune ottimizzazioni che ho descritto sopra.

Domanda n. 3: NHibernate 4.0 aggiunge MSSQL 2012, attualmente non esiste il dialetto per MSSQL 2014. Questo non è sicuramente un grosso problema in quanto molte delle funzionalità di MSSQL 2014 sono irrilevanti/trasparenti per l'OR-Mapper.

Problemi correlati