Estamos a punto de comenzar un nuevo proyecto similar al anterior. Podría copiar el diseño anterior, pero no estoy muy satisfecho con el diseño anterior.Uso de Entity Framework con el patrón de repositorio en WinForms MDI
Es un sistema empresarial "estándar" (ventas, inventario, almacenamiento, etc.) construido en la parte superior de .Net 3.5 (Winforms MDI) con Entity Framework en el back-end.
Todas las formas heredan de una base (que hereda Windows.Form). El formulario expone una propiedad llamada ObjectContext, que en la primera llamada crea un nuevo ObjectContext. Creo que este es un buen UnitOfWork, teniendo todo el acceso a datos aislado en cada formulario.
Sin embargo.
He encapsulado todas las consultas y CRUD comunes en "repositorios de personas pobres". Estos repositorios están expuestos como propiedades del ObjectContext.
Así que si quisiera vincular y ordenar un formulario, llamaría al OrderLinesGrid = ObjectContext.OrderRepository.GetOrderLinesByID (orderID).
El OrderRepository obtiene una referencia a la ObjectContext creado para la forma, como este
(En mi clase ObjectContext parcial)
Private _OrderRepository as OrderRepository
Public ReadOnly Property OrderRepository as OrderRepository
Get
if _orderrepository is nothing then
_orderrepository = New OrderRepository(me)
end if
return _orderrepository
End Get
End Property
Lo que no me gusta de esto es:
La llamada al repositorio se realiza mediante ObjectContext. Por lo tanto, hago no obtener la abstracción entre la consulta y el dataaccesslayer I le gustaría.
Para cada nuevo tipo en mi dominio I necesito para crear una propiedad en mi ObjectContext
Mi llamado a OrderRepository sólo debe devolver los objetos de dominio y no preocuparse por la forma en que se conserva. Además, no puedo permitir que cada Repositorio tenga su propio ObjectContext, ya que eso me obligaría a Adjuntar y Separar objetos al hacer referencia a, por ejemplo, País a una propiedad Order.Country.
Agradecería cualquier ideas y comentarios en este diseño :)