Como implementar o padrão Repository com LinqToEntities?
-
09-06-2019 - |
Pergunta
Como implementar o padrão de repositório com linqtoentities como implementar a interface
Solução
Eu faço o seguinte:
Uma camada de serviço contém meus objetos de negócios.Ele é passado para o repositório por meio de uma inversão de controle (Castle Windor é minha escolha usual).O repositório é responsável pelo mapeamento entre os objetos de negócios e os objetos da estrutura da minha entidade.
As vantagens:Você não tem problemas com o estado do objeto ou com o contexto dos objetos EF porque você os está apenas carregando durante a manipulação de dados no lado do repositório.Isso facilita a situação ao passá-los para WCF/Web-Services.
As desvantagens:Você está perdendo algumas das funcionalidades de rastreamento do Entity Framework, é necessário carregar manualmente o objeto de dados (objetos ef), possivelmente se necessário manualmente para verificações de simultaneidade otimistas (por meio de um carimbo de data/hora no objeto de negócios, por exemplo).
Mas geralmente prefiro esta solução, pois é possível alterar posteriormente o repositório.Isso me permite ter repositórios diferentes (por exemplo, meu objeto de usuário está realmente usando ASPNetAuthenticationRepository em vez de EntityFrameworkRepository), mas para minha camada de serviço é transparente.
Com relação à interface, eu usaria os objetos de negócios da camada de serviço como seus objetos de parâmetro e não deixaria esses objetos EF saírem da camada de repositório.espero que ajude
Outras dicas
Quase gostei disso, exceto pelas coisas de "Castle Windor".Dê uma olhada em openticket.codeplex.com