Pergunta

Que tipos de considerações existem para migrar um aplicativo do NHibernar 1,2 a 2,0?O que são mudanças significativas vs.alterações recomendadas?

Existem problemas de mapeamento?

Foi útil?

Solução

Mudanças importantes no NHibernate 2.0

Se você tiver uma boa cobertura de teste, será um trabalho árduo.

Editar:Nós atualizamos esta manhã.Não há nada importante.Você precisa liberar () a sessão após excluí-la.O namespace Expressão foi renomeado para Critério.Tudo isso é abordado no link acima.Os mapeamentos não precisam de alterações.É bastante transparente.Ah, e transações em todos os lugares, mas provavelmente você já estava fazendo isso.

A propósito, aqui está uma visão interessante das mudanças: http://codebetter.com/blogs/patricksmacchia/archive/2008/08/26/nhibernate-2-0-changes-overview.aspx

Outras dicas

Encontrei a resposta aqui:

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

versão ouro 2.0.0.GA

ÚLTIMAS MUDANÇAS de NH1.2.1GA para NH2.0.0

  • A infraestrutura

  • Tempo de compilação

    • O namespace NHibernate.Expression foi renomeado para NHibernate.Criterion
    • IInterceptor possui métodos adicionais.(IsUnsaved foi renomeado como IsTransient)
    • INamingStrategy
    • Eu digito
    • IEntityPersister
    • IVersionType
    • IBatcher
    • IUserCollectionType
    • IEnhancedUserType
    • IPropertyAccessor
    • ValueTypeType renomeado para PrimitiveType
  • Possíveis alterações significativas para estruturas externas

  • Várias classes foram movidas entre namespaces
  • Várias classes foram renomeadas (para corresponder aos nomes do Hibernate 3.2)
  • A interface ISession possui métodos adicionais
  • ICacheProvider
  • Critério IC
  • CritériosQueryTranslator

  • Tempo de inicialização

    • A seção <nhibernate>, em App.config, não é mais suportada e será ignorada.O esquema de configuração para arquivo de configuração e App.config agora é idêntico, e o nome da seção App.config é:<configuração de hibernação>
    • <hibernate-configuration> tem um esquema diferente e todos os nomes de propriedades estão marcados
    • as propriedades de configuração não são mais prefixadas por “hibernate.”, se antes você especificava “hibernate.dialect”, agora você especifica apenas “dialect”
    • Todas as consultas nomeadas serão validadas no momento da inicialização, uma exceção será lançada se alguma não for válida (pode ser desabilitada se necessário)
    • Verificações mais rigorosas para classes de proxy (todos os métodos públicos devem ser virtuais)

  • Tempo de execução

    • SaveOrUpdateCopy() retorna uma nova instância da entidade sem alterar a original
    • O AutoFlush não ocorrerá fora de uma transação - As transações do banco de dados nunca são opcionais, toda comunicação com o banco de dados deve ocorrer dentro de uma transação, independentemente de você ler ou gravar dados.
    • NHibernate retornará long para consultas count(*) no SQL Server
    • <fórmula> deve conter parênteses quando necessário
    • Esses nomes de funções HQL que podem causar conflito em seus nomes reservados HQL são:
      • substring
      • localizar
      • aparar
      • comprimento
      • comprimento_bit
      • coalescer
      • nulo se
      • abdômen
      • moda
      • quadrado
      • superior
      • mais baixo
      • elenco
      • extrair
      • concat
      • carimbo de data/hora atual
      • data do sistema
      • segundo
      • minuto
      • hora
      • dia
      • mês
      • ano
      • str
    • <any> quando meta-type=”class” o tipo persistente é uma string contendo Class.FullName
      • Para definir um parâmetro em uma consulta você deve usar SetParameter(”paraName”, typeof(YourClass).FullName, NHibernateUtil.ClassMetaType)

  • Mapeamento

  • <qualquer> :O metatipo padrão é “string” (era “class”)
  • Licenciado em: CC-BY-SA com atribuição
    Não afiliado a StackOverflow
    scroll top