Estoy tratando de ser un mejor desarrollador ...separación de las preocupaciones y el patrón Repositorio de Entity Framework 3.5
lo que estoy trabajando con:
- .Net Framework 1.0 MVC
- Entity Framework 3,5
he estado leyendo y creo que lo que quiero hacer es:
- Crea un repositorio para cada agregado en el dominio. Un repositorio de órdenes, por ejemplo, administrará los artículos de pedido de un pedido.
- Crea una capa de servicio para manejar la lógica de negocios. Cada repositorio tendrá un objeto de servicio correspondiente con métodos similares.
- Crear DTO pasados entre el repositorio y el servicio
- Posiblemente crear ViewModels que son clases para que la vista consuma.
que tienen una interfaz de repositorio de base que mis interfaces de repositorio agregados implementarán ...
public interface IRepository<T>
{
IEnumerable<T> ListAll();
T GetById(int id);
bool Add(T entity);
bool Remove(T entity);
}
Mi Pedido interfaz de repositorio se define de la siguiente manera ... es probable que haya otros métodos como consigo más en este ejercicio de aprendizaje.
public interface IOrderRepository : IRepository<Order>
{
}
Mis clases de servicio se definen esencialmente de la misma manera que los repositorios, excepto que cada implementación de servicio incluye la lógica comercial. Los servicios tendrán una interfaz de repositorio en el constructor (no estoy listo para IoC en este ejercicio, pero creo que es allí donde me gustaría terminar el camino).
- Las implementaciones del repositorio se moverán desde la base de datos utilizando Entity Framework. Al recuperar datos; los métodos solo devolverán los DTO y no los objetos generados por EF
- Los servicios (como los estoy llamando) controlarán el repositorio y llevarán a cabo la lógica comercial. Los servicios son lo que verá en el controlador, es decir _orderService.GetById (1).
- Aquí es donde comencé a hacer flip-flops y podría utilizar algunos comentarios ... ¿Debería hacer que mis clases de servicio rellenen clases de ViewModel ... no debería tener clases de ViewModel ... tal vez eso es demasiada asignación de un tipo ¿a otro?
Me encantaría obtener algunos comentarios sobre la dirección en que me dirijo con respecto a una separación de preocupaciones.
Gracias
He estado tratando de hacer lo mismo, pero no puedo pensar en una buena manera de manejar el método de inclusión de EF? –
P.S. ¿Estás seguro de que te refieres a EF 3.5? Creo que la versión 1 es la versión actual y la versión 2 está en versión beta. O bien, estoy usando una v versión anterior de la misma. –
EF 3.5 = versión 1, EF 4.0 = versión 2 – bobwah