Pergunta

Eu estou tentando implementar AutoMapper para mapear um ViewModel a uma entidade onde uma das propriedades da entidade também é uma Entidade.

Eu quero o meu conversor para usar ISession.Load do NHibernate <> método para carregar isso.

Então a questão é qual é a melhor maneira de injetar ISession em minha ITypeConverter implementação? Além disso, um aspecto a ter em mente é que ISession que será injetada será descartado, então eu precisaria injetar um novo cada vez que ISession quando um mapeamento precisa acontecer?

Foi útil?

Solução

Fazemos isso em nossos sistemas, e tem coisas como conversores de tipo Guid-> Entidade. No entanto, nós escopo nossos ISessions por HttpContext, assim que um novo ISession irá não ser injetado por ITypeConverter. No entanto, AutoMapper faz instanciar uma nova instância ITypeConverter cada vez que é necessário.

Mas duas entidades que se reúnem a partir de diferentes instâncias ISession levará em apuros. Apenas certifique-se que você compartilhe uma única instância ISession per HttpContext, e você vai ser definido.

Outras dicas

Eu não sei sobre nHibernate pena e ninguém parece querer responder a esta pergunta então ...

A maneira que eu iria lidar com isso é talvez escrever meu próprio personalizado modelo Binder. Ele pode, então, ser resonsible para mapear meu ViewModel à minha entidade.

Você também terá acesso ao objeto HttpRequest para que você possa obter todos os seus campos de texto para fora e mapeá-los para a sua entidade.

Espero que isso ajude, mesmo que não é específico para sua pergunta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top