none
Fluent e NHibernate em um cenário de composição RRS feed

  • Pergunta

  • Bom dia, estou em uma fase de prototipação de um projeto, inicialmente estava usando o entity framework para acesso a dados, mas infelizmente os arquitetos resolveram usar FLuent(opcional) e NHibernate(Obrigatório).

    O Host do serviço implementa um contrato, e os módulos tb, mas o host do serviço não precisa referenciar os módulos, estes módulos são iniciados através de composição (MEF);

    Com o entity framework, não era preciso referenciar o contrato dos modulos;

    Já com esse Fluent,  é necessário, parece que internamente ele usa o CallingAssembly() para pegar as referencias configuradas no mapeamento.

    Gostaria de saber se alguém da comunidade já passou por problema semelhante, lembrando que se eu referenciar assembly de módulos no host dos serviços, estarei quebrando a arquitetura de composição e criando dependencia.

    Obrigado!


    Allan Tavares

    segunda-feira, 16 de julho de 2012 22:29

Respostas

Todas as Respostas

  • Não conheço essa arquitetura ainda, mas tentando te ajudar, o impedimento é do fluent ou hibernate? Se for só por causa do fluent tente o "mapping by code" que está embutido no hibernate.

    Veja também se isso tem alguma coisa haver com seu caso: http://stackoverflow.com/questions/6229221/fluent-nhibernate-mef-mapping-classes-from-assemblies-which-are-stored-in-a-d

    • Marcado como Resposta Allan Tavares terça-feira, 17 de julho de 2012 18:30
    terça-feira, 17 de julho de 2012 01:01
  • Obrigado RS.Developer, o post do Stackoverflow ajudou muito.

    estava usando um método abstrato ("GetAsm()") para pegar o Assembly, depois de ler o post, me dei conta que minha classe de acesso a dados era genéria, e quando eu tentava adicionar o assembly, ".Mappings(mp => mp.FluentMappings.AddFromAssembly(GetAsm())", estava tentando adicionar algo que não estava carregado no AppDomain. Valeu!

    Consegui chegar em outra alternativa que foi pegar o assembly direto de meu parametro genérico ("Assembly asm = typeof(EN).Assembly;"). caso o assembly não estivesse carregado eu o carregava conforme link indicado por vc.

    Valeu!


    Allan Tavares

    terça-feira, 17 de julho de 2012 18:37
  • Legal que isso resolveu, acabou que aprendi também!
    terça-feira, 17 de julho de 2012 23:56