AutoMapper dependências conversor de tipo personalizado
-
19-09-2019 - |
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?
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.