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?

È stato utile?

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:

http://blog.domaindotnet.com/2008/08/24/nhibernate-20-gold-released-must-wait-for-linq-to-nhibernate/

oro versione 2.0.0.GA

MODIFICHE di rilievo da NH1.2.1 GA per NH2.0.0

  • Infrastrutture

  • 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)

  • Mappatura

  • <any> :di default meta-tipo “stringa” (era “classe”)
  • Autorizzato sotto: CC-BY-SA insieme a attribuzione
    Non affiliato a StackOverflow
    scroll top