Onde o IdentityMap pertence: unidade de trabalho ou repositório?
-
05-07-2019 - |
Pergunta
Se eu implementar uma ferramenta simples ou/m, onde coloco o mapa de identidade? Obviamente, cada repositório deve ter acesso ao seu próprio mapa de identidade, para que possa registrar objetos carregados (ou talvez o DataMapper seja quem registra objetos no identitymap?).
E quando comprometo a unidade de trabalho, também preciso acessar o mapa de identidade para ver qual entidade está suja e qual é limpa (ou estou errado novamente e há algum objeto externo que chama os métodos RegisterClean/Registerdirty da minha classe UnitOfwork? Que objeto faz isso?).
Isso significa que eu devo implementar o IdentityMap como um objeto completamente independente que contém identidade interna para cada tipo de entidade?
Realmente confuso sobre como o IdentityMap, o repositório e a unidade de trabalho funcionam juntos.
Solução
Com nosso .NET O/R Mapper, LightSpeed Colocamos o mapa de identidade dentro da unidade da classe de trabalho. Isso funcionou muito bem para nós e parece bastante natural, pois atua efetivamente como um cache de nível 1 para fins de consulta durante a vida da unidade da obra.
Geralmente, injete ou de alguma forma forneça um Uow para sua classe de repositório, para que você tenha um escopo e entrada eficazes para consultar.
Espero que isso ajude.