2011-03-24 19 views
5

Estoy desarrollando una aplicación de escritorio de WPF que utiliza Entity Framework 4 y SQL compacto 4. He visto dos estilos distintos de Repository clases:EF4: ObjectContext Lifetime?

  • El Repository instancia un ObjectContext, que está dispuesto de cuando el Repository es recogido de basura La duración del ObjectContext es la misma que la duración de la aplicación.

  • Una clase DataStoreManager separada crea y contiene un ObjectContext durante la vida de la aplicación. Cuando se necesita un repositorio, un comando obtiene una referencia ObjectContext del DataStoreManager y lo pasa al constructor para el Nuevo repositorio. La vida útil de ObjectContext es la duración de la aplicación.

¿Alguno de los enfoques es considerado una mala práctica? ¿Presenta alguna ventaja absoluta sobre la otra? ¿Se considera que ambos enfoques son la mejor práctica? ¿Es más ampliamente aceptado o utilizado por los desarrolladores que el otro? Gracias por tu ayuda.

+0

El segundo enfoque se puede llamar anti patrón. Verifique mi respuesta aquí: http://stackoverflow.com/questions/3653009/entity-framework-and-connection-pooling/3653392#3653392 –

Respuesta

7

yo habría pensado que la celebración de un ObjectContext abrir a través de múltiples accesos sería una mala práctica. Tan pronto como se corrompe, tendrá que reciclar y manejar la corrupción.

El patrón Repository es más para la abstracción de acceso a datos pero no necesariamente se asigna a la duración del contexto. El patrón de unidad de trabajo trata más sobre la encapsulación de uno o más accesos de bases de datos/repositorios, es decir, un caso de uso puede incluir agregar un nuevo blog y luego agregar la primera publicación predeterminada, esto puede requerir llamar a dos repositorios, en este punto Es posible que desee compartir el contexto y encapsular estos dos comandos en una transacción. Agregar una segunda publicación podría hacerse horas después y ser un nuevo contexto/unidad de trabajo.

DJ tiene razón al mencionar las duraciones de Contexto que generalmente establecería en un nivel de aplicación.

+1

Se cambió la respuesta aceptada a este: el consenso parece ser que los contextos de objeto de duración limitada son la mejor practica –