Usuário com melhor resposta
Erro ao tentar migrar NHibernate da versão 2.1.2.4 para a 3.4.0

Pergunta
-
Bom dia.
Estou tentando efetuar a migração citada. Tentei fazer a migração utilizando o Nuget e ocorreram os erros abaixo na classe responsável pela inversão de controle:
1
The type 'Castle.Facilities.FactorySupport.FactorySupportFacility' cannot be used as type parameter 'TFacility' in the generic type or method 'Castle.Windsor.IWindsorContainer.AddFacility<TFacility>()'. There is no implicit reference conversion from 'Castle.Facilities.FactorySupport.FactorySupportFacility' to 'Castle.MicroKernel.IFacility'.
2
The best overloaded method match for 'Castle.Windsor.IWindsorContainer.Register(params Castle.MicroKernel.Registration.IRegistration[])' has some invalid arguments
3
Argument 1: cannot convert from 'Castle.MicroKernel.Registration.ComponentRegistration<object>' to 'Castle.MicroKernel.Registration.IRegistration[]'
segue o código da classe IOC:
using System;
using System.Reflection;
using Castle.Core;
using Castle.Core.Interceptor;
using Castle.Facilities.FactorySupport;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using NHibernate;publicclassIOC// ReSharper restore InconsistentNaming { privatestaticIWindsorContainer _container; public IOC(IWindsorContainer container) { _container = container; } publicvoid AddComponentsTo() { _container.AddFacility<FactorySupportFacility>(); AddApplicationPresentersTo(); AddApplicationExtServicesTo(); AddCustomRepositoriesTo(); AddApplicationServicesTo(); AddSchedulerManager(); _container.Register( Component.For<IInterceptor>().ImplementedBy<TransactionInterceptor>().Named("TransactionInterceptor")); }
}
Jà pesquisei em vários fóruns e não encontrei solução.
Alguém já passou por algo parecido?
Respostas
-
Seu problema nao é o NHibernate e sim o Castle. Na versao 2 do N, o castle era um componente obrigatorio e na versao 3 ele deixou de ser utilizado. Essa parte do seu codigo tem que ser reescrita, aqui um exemplo:
https://erikbase.wordpress.com/2010/03/22/managing-nhibernate-sessions-with-ioc/
Agora voce pode usar outros bibliotecas IOC. Eu sugiro voce migrar para o Ninject. Por enquanto é o mais simples e estavel.
http://michaelhubele.com/post/2013/07/18/setting-nhibernate-work-ninject
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 18:49
Todas as Respostas
-
Bom dia Marclameu,
Você já verificou aqui se alguém mais passou pelo mesmo problema?
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
- Editado Marcos SJ terça-feira, 11 de agosto de 2015 13:43
-
Seu problema nao é o NHibernate e sim o Castle. Na versao 2 do N, o castle era um componente obrigatorio e na versao 3 ele deixou de ser utilizado. Essa parte do seu codigo tem que ser reescrita, aqui um exemplo:
https://erikbase.wordpress.com/2010/03/22/managing-nhibernate-sessions-with-ioc/
Agora voce pode usar outros bibliotecas IOC. Eu sugiro voce migrar para o Ninject. Por enquanto é o mais simples e estavel.
http://michaelhubele.com/post/2013/07/18/setting-nhibernate-work-ninject
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Marcado como Resposta Marcos SJ quinta-feira, 13 de agosto de 2015 18:49