Se o Entity Framework / DbContext for o DAL / Repository, onde ele se encaixa na arquitetura de 3 camadas?

Eu tenho lido artigos sobre StackOverflow e outros sites todos os dias sobre as melhores práticas de arquitetura e há tantas ideias e opiniões conflitantes.

Eu finalmente resolvi uma abordagem, mas estou tendo muita dificuldade em decidir onde colocar os objetos EF (DbContext, Fluent APIs, Seeding data, etc). Aqui está o que eu tenho atualmente:

Projeto ASP.NET MVC: O projeto da web real. Contém as vistas padrão, controladores e modelos de visualização (dentro deModelos pasta).

Projeto de Modelo de Domínio: Contém todas as classes POCO que definem os objetos do banco de dados (domínio). Atualmente, não menciona nem faz referência a nenhum objeto EF.

Projeto de Camada de Serviço: Contém objetos de serviço para cada tipo de objeto de domínio (por exemplo, IProductService, IOrderService, etc). Cada serviço faz referência a objetos EF, como o DbSets, e lida com regras comerciais - por exemplo, adicionar um produto, buscar um produto, anexar um produto a um pedido, etc.

Então a questão é, nessa configuração, para onde vão as aulas da EF? Inicialmente eu pensei na camada de serviço, mas isso não parece fazer sentido. Eu então pensei em colocá-los na Camada de Modelo de Domínio, mas depois ele liga os Modelos de Domínio ao EF, que é essencialmente um DAL / Repositório. Finalmente, pensei em criar um projeto de DAL separado apenas para a EF, mas parece um grande desperdício, considerando que ele provavelmente terá 3-4 arquivos (DbContext e alguns outros arquivos pequenos).

Alguém pode fornecer alguma orientação?

questionAnswers(2)

yourAnswerToTheQuestion