Estoy creando una nueva aplicación ASP.NET Core 5 MVC. Quiero usar una arquitectura limpia como se describe en el libro electrónico de arquitectura de aplicaciones web de Microsoft.
También estoy estudiando la aplicación de muestra eShopOnWeb disponible aquí:
https://github.com/dotnet-architecture/eShopOnWeb
Lo que entiendo del libro electrónico y la aplicación de muestra es que las clases de entidad EF Core (por ejemplo, Cliente, Producto, Pedido) irán dentro de la carpeta Entidades del proyecto ApplicationCore. El DbContext estará en el proyecto de infraestructura.
Mi confusión es: ¿está bien agregar atributos de esquema de anotación de datos como [Table] , [DatabaseGenerated] y [Key] en estas clases de entidad dentro del proyecto ApplicationCore ? Si no, ¿dónde debo agregar estas anotaciones de datos?
Cualquier consejo en este sentido es muy apreciado.
Gracias.
En el ejemplo de eShopOnWeb separan Entidades y modelos de configuración. Entonces, eso significa que para tener una arquitectura limpia no necesita anotaciones directamente en estas Entidades.
Puede usar FluentAPI, como también lo hicieron en el directorio Infraestructura/Datos/Config .
Entonces, si tiene un proyecto separado para DataContext, esa es la mejor ubicación para describir sus entidades con FluentAPI en este caso.
Más información sobre FluentAPI: https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/fluent/types-and-properties