2009-04-23 11 views
7

Soy desarrollador de .NET por día, pero he estado trabajando con Rails y Merb durante el año pasado en mis propios proyectos secundarios, así que cuando se trata de MVC y ORM, estoy más acostumbrado a ellos y usando ActiveRecord y DataMapper.Unidad de trabajo/administradores de repositorios para NHibernate?

Estoy comenzando con ASP.NET MVC, y me gusta lo que veo en NHibernate y Fluidez NHibernate, pero estoy buscando un poco más sobre cómo manejar mejor la unidad de trabajo o modelo de repositorio.

Me gustaría algo que no sea enorme en arquitectura. He visto algunos proyectos como S # arp Architecture, pero parece un poco hinchado.

Todo lo que busco es una forma sencilla de gestionar conexiones y gestionar la recuperación/almacenamiento de datos. Una simple guía o aplicación de muestra sería suficiente.

+0

¿Está utilizando un contenedor de COI? Sé que Castle tiene cierto soporte para NHibernate a través de extensiones. Realmente ayudaría saber qué herramientas está utilizando porque la respuesta cambiará. También si está tratando de admitir una sola sesión en muchas solicitudes de página. – Min

Respuesta

11

Hay unos pocos componentes que se pueden utilizar para facilitar la Unidad de implementaciones de trabajo:

En cuanto a proyectos de ejemplo, here es uno para Burrow. Estoy usando Burrow para un proyecto en este momento y está funcionando bien para mí. Aunque no los utilizo, hay clases de repositorio que usan la gestión de sesión de la unidad de trabajo, por lo que es realmente fácil seguir adelante. También uso Fluent NHibernate y es sencillo hacer que todo funcione en conjunto.

+0

Cita "Fabio Maulo, un desarrollador de nhibernate ...", yo diría, él es EL desarrollador de nhibernate :-) Buena respuesta de todos modos. –

+0

Al mirar el registro de compromiso y la lista de correo, ciertamente no puedo discutir eso. De hecho, mecanografié con un "the" inicialmente y se debe dar el debido crédito. –

+0

El enlace de NHibernate Madriguera está roto. –

1

Todo lo que busco es una forma sencilla de gestionar conexiones y gestionar la recuperación/almacenamiento de datos.

Sí, NHibernate puede ser bastante detallado. Investigué los "patrones" de la Unidad de Trabajo y el Repositorio (en realidad son "fachadas", pero esa es otra historia) y escribí implementaciones muy simples de ellos. Ambos simplifican enormemente NHibernate, pero sugiero usar la implementación de la Unidad de trabajo ya que, en general, creo que es más eficiente y fácil de usar que el Repositorio. Descargarlo y darle una oportunidad:

http://code.google.com/p/nhibernate-unitofwork-example/

+0

Hola James, gracias por el ejemplo. Miré tu código. Su unidad de trabajo no considera LazyLoading. ¿Qué sucede si la sesión aún se requiere después del proceso de carga inicial? En su caso, está dispuesto para entonces. –

+0

Sebastian, gracias por revisar mi código. Mi implementación de UOW realmente considera la carga diferida y es bastante compatible. Sugeriría mantener la sesión abierta todo el tiempo que la necesite, ya que no hay penalización por mantenerla abierta. Si necesita cerrar la sesión por cualquier razón, simplemente abra una nueva y la carga diferida debería funcionar como se esperaba. –

2

También podría estar interesado en Castle ActiveRecord, que implementa el patrón ActiveRecord en la parte superior de NHibernate, inspirado libremente en ActiveRecord de Rails.

Cuestiones relacionadas