Si Entity Framework / DbContext es el DAL / Repositorio, ¿dónde encaja dentro de la arquitectura de 3 niveles?

He estado leyendo artículos sobre StackOverflow y otros sitios todo el día sobre las mejores prácticas de arquitectura y hay tantas ideas y opiniones conflictivas.

Finalmente me decidí por un enfoque, pero me está costando mucho decidir dónde colocar los objetos EF (DbContext, Fluent APIs, Sembrar datos, etc.). Esto es lo que tengo actualmente:

Proyecto ASP.NET MVC: El proyecto web actual. Contiene las vistas estándar, los controladores y los modelos de vista (dentro de unModelos carpeta).

Proyecto de modelo de dominio: Contiene todas las clases de POCO que definen los objetos de la base de datos (dominio). Actualmente, no menciona ni hace referencia a ningún objeto EF.

Proyecto de la capa de servicio: Contiene objetos de servicio para cada tipo de objeto de dominio (por ejemplo, IProductService, IOrderService, etc.). Cada servicio hace referencia a objetos de EF como DbSets y maneja reglas de negocios, por ejemplo, agregar un producto, obtener un producto, agregar un producto a un pedido, etc.

Entonces, la pregunta es, en esta configuración, ¿a dónde van las clases EF? Inicialmente pensé en la capa de servicio, pero eso no parece tener sentido. Entonces pensé en ponerlos en la Capa de Modelo de Dominio, pero luego vincula los Modelos de Dominio a EF, que es esencialmente un DAL / Repositorio. Finalmente, pensé en crear un Proyecto DAL separado solo para EF, pero parece un gran desperdicio considerando que probablemente tendrá 3-4 archivos (DbContext y algunos otros archivos pequeños).

¿Alguien puede proporcionar alguna orientación?

Respuestas a la pregunta(2)

Su respuesta a la pregunta