¿Cómo implementar el patrón de repositorio con LinqToEntities?
-
09-06-2019 - |
Pregunta
Cómo implementar el patrón de repositorio con las centros de linqto
Solución
Hago lo siguiente:
Una capa de servicio contiene mis objetos comerciales.Se pasa al repositorio mediante una inversión de control (Castle Windor es mi opción habitual).El repositorio está a cargo del mapeo entre los objetos comerciales y los objetos del marco de mi entidad.
Las ventajas:No tiene problemas con el estado del objeto o el contexto de los objetos EF porque simplemente los está cargando durante la manipulación de datos en el lado del repositorio.Esto facilita la situación al pasarlos a WCF/Web-Services.
Las desventajas:Está perdiendo parte de la funcionalidad de seguimiento de Entity Framework, debe cargar manualmente el objeto de datos (objetos ef), posiblemente si es necesario manualmente para realizar comprobaciones de simultaneidad optimistas (a través de una marca de tiempo en el objeto comercial, por ejemplo).
Pero en general prefiero esta solución, porque luego es posible cambiar el repositorio.Me permite tener diferentes repositorios (por ejemplo, mi objeto de usuario en realidad usa ASPNetAuthenticationRepository en lugar de EntityFrameworkRepository) pero para mi capa de servicio es transparente.
Con respecto a la interfaz, usaría los objetos comerciales de la capa de servicio como objetos de parámetros y no dejaría que esos objetos EF salgan de la capa del repositorio.Espero que ayude
Otros consejos
Casi me gusta esto excepto por lo de "Castle Windor".Eche un vistazo a openticket.codeplex.com