NHibernate da 1.2 a 2.0 migrazione
-
09-06-2019 - |
Domanda
Che tipo di considerazioni sono lì per la migrazione di un'applicazione da NHibernate 1.2 a 2.0?Quali sono modifiche di rilievo vsle modifiche consigliate?
Ci sono problemi di mappatura?
Soluzione
Ultime modifiche in NHibernate 2.0
Se hai una buona copertura di test è busywork.
Edit:Abbiamo aggiornato questa mattina.Non c'è niente di grave.Devi Flush() la sessione dopo l'eliminazione.L'Espressione dello spazio dei nomi ha rinominato Criterio.Tutti questi sono coperti nel link sopra.Mapping bisogno di nessuna modifica.E ' abbastanza trasparente.Oh, e le transazioni ovunque, ma probabilmente fa già.
A proposito, ecco un interessante sguardo ai cambiamenti: http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx
Altri suggerimenti
Ho trovato la risposta qui:
oro versione 2.0.0.GA
MODIFICHE di rilievo da NH1.2.1 GA per NH2.0.0
-
Infrastrutture
- .NET 1.1 non è più supportato
- Nullables.NHibernate non è più possibile utilizzare questi tipi di .NET 2.0)
- Contrib spostato.Nuova Posizione
-
Il tempo di compilazione
- NHibernate.Espressione dello spazio dei nomi è stato rinominato per NHibernate.Criterio
- IInterceptor sono altri metodi.(IsUnsaved è stato rinominato IsTransient)
- INamingStrategy
- Idigitate
- IEntityPersister
- IVersionType
- IBatcher
- IUserCollectionType
- IEnhancedUserType
- IPropertyAccessor
- ValueTypeType rinominato PrimitiveType
-
Possibili Modifiche di rilievo per esterni, quadri
- Le varie classi sono stati spostati tra gli spazi dei nomi
- Le varie classi sono stati rinominati (da abbinare Sospensione 3.2 nomi)
- ISession interfaccia sono altri metodi
- ICacheProvider
- ICriterion
- CriteriaQueryTranslator
Tempo di inizializzazione
- <nhibernate> sezione in App.config, non è più supportato e verrà ignorato.Schema di configurazione per la configurazione del file e App.config è ora identico, e l'App.nome di sezione config è:<hibernate-configuration>
- <hibernate-configuration> hanno uno schema diverso e di tutte le proprietà (i nomi sono verificati
- proprietà di configurazione non sono più il prefisso “hibernate.”, se prima si potrebbe specificare “hibernate.dialetto”, ora si specifica solo “dialetto”
- Tutti i named query verrà convalidato in fase di inizializzazione, viene generata un'eccezione se uno non è valido (può essere disattivata, se necessario)
- Controlli più severi per l'inoltro delle classi (tutti i metodi pubblici deve essere virtuale)
Il tempo di esecuzione
- SaveOrUpdateCopy() restituisce una nuova istanza dell'entità, senza modificare l'originale
- AutoFlush non si verificano al di fuori di una transazione - le transazioni di Database non sono mai opzionale, la comunicazione con il database deve avvenire all'interno di una transazione, qualunque sia la lettura o la scrittura dei dati.
- NHibernate tornerà a lungo per count(*) query su SQL Server
- <formula> deve contenere parentesi, quando necessario,
- Questi HQL i nomi di funzione può causare conflitti nella HQL nomi riservati sono:
- sottostringa
- individuare
- trim
- lunghezza
- bit_length
- coalesce
- nullif
- abs
- mod
- sqrt
- superiore
- inferiore
- cast
- estratto
- concat
- current_timestamp
- sysdate
- secondo
- minuti
- ora
- giorno
- mese
- anno
- str
- <any> quando meta-type=”class” la persistente tipo è una stringa che contiene la Classe.FullName
- Per impostare un parametro in una query, è necessario utilizzare SetParameter(”paraName”, typeof(YourClass).FullName, NHibernateUtil.ClassMetaType)