Estoy buscando cualquier tipo de documentación, una aplicación open source nhibernate winform que pueda estudiar, o incluso mejor un framework winform/nhibernate. Vi un poco de esto en Nhibernate contrib y NhAddins pero eso es todo. Hay mucho sobre web pero muy pocos sobre winform. ¿Por qué es eso?Ejemplo de la aplicación nhibernate winform
Respuesta
Hay un trabajo en progreso discutiendo la mezcla de formularios nHibernate + Windows escritos por Sebasian Talamoni available here. Incluye discusión + código.
Encontré este que es mucho más reciente. Tiene generación de código y utiliza spring.net http://www.codeproject.com/KB/cs/NHibernateForWinforms.aspx
La razón por la que hay tan pocos ejemplos para winforms, es imho, administrar sesiones es mucho más complejo en clientes inteligentes que en el mundo web.
En el mundo de la web, usted abre una ISession cuando se inicia una sesión http, y cierra la ISession cuando la sesión http está finalizando.
No existe una traducción directa del concepto de sesión http en un cliente inteligente; múltiples pantallas se abren al mismo tiempo, algunas se minimizan, otras pantallas se abren y se cierran todo el tiempo, otras se cierran sin guardar cambios ... se entiende la idea.
creo que hay tres estrategias básicas:
1 sesión por aplicación
Me quedaría lejos de esto. Recuerde, si su sesión singleton arroja una excepción, como una excepción de entidad obsoleta, esa sesión ahora no se puede usar. Tu aplicación está básicamente en el doo doo.
Sesión por pantalla
Esto es un poco mejor, evitar su aplicación bajando la sartén si una sola sesión explota. Sin embargo, algunas pantallas pueden agruparse juntas en el mismo unit of work. Necesitan compartir la misma sesión o tendrán issues tratando de compartir sus entidades entre pantallas ya que las entidades persistentes tienen afinidad con la sesión que las cargó.
conversaciones persistentes
Creo que este es el camino a seguir. Usted define un servicio que contiene el alcance de su unidad de trabajo. Cada vez que llama a métodos en este servicio, la ISession correcta se intercambia de manera invisible para usted. Cuando haya terminado con su servicio, llame a otro método y la sesión se descartará.
La instancia del servicio se puede compartir entre las pantallas, por lo que comparten la sesión. Se pueden abrir varias sesiones al mismo tiempo. Todo esto se hace a través de técnicas de Programación Orientada a Aspectos, no es necesario tomar ninguna otra acción que etiquetar sus servicios con atributos.
Esto suena bastante complicado así que revise las publicaciones de Fabio en él here, here y here.
Hay una implementación de este patrón en unoffical nh addins. Esto funciona en Windsor, probablemente podría convertirlo a otros contenedores IoC.
Fabio Maulo tiene un buen post con respecto a la gestión de sesiones en una aplicación WinForms, también hay una descarga de la aplicación de muestra vinculada en la parte inferior.
This artículo de Oren Eini es el mejor ejemplo de cómo implementar una aplicación de escritorio de escritorio que he visto. Los patrones de diseño y las mejores prácticas que detalla deberían aplicarse a las aplicaciones WinForms o WPF \ Silverlight.
- 1. Implementación de MVVM para la aplicación WinForm
- 2. implementando la aplicación winform con sqlite incrustado
- 3. Inicie la aplicación WinForm Aerosnaped Right Aligned
- 4. NHibernate y Memcached - Tutorial/Ejemplo
- 5. Ejemplo de la aplicación SignalR Console
- 6. ¿Cómo se inicia la aplicación WinForm minimizada en la bandeja?
- 7. cambio predeterminado Winform icono a través de toda la aplicación
- 8. Ejemplo Aplicación de FasterCSV
- 9. Asignar una consola para una aplicación WinForm
- 10. ¿Mezcla WPF con una aplicación WinForm?
- 11. Cómo agregar ayuda a la aplicación winform C#
- 12. Filas seleccionadas al ordenar DataGridView en la aplicación WinForm
- 13. Tipo NHibernate Expulsar Por ejemplo, en lugar de por
- 14. ASP.NET MVC, Spring.NET, NHibernate configuración inicial/ejemplo/tutorial
- 15. Problema de reloj de arena en una aplicación WinForm
- 16. ¿Hay una aplicación de inspector de control WinForm?
- 17. ¿Cómo debo implementar un código de color para toda la aplicación en una aplicación WinForm?
- 18. Gestión de sesión NHibernate en la aplicación WCF
- 19. DDD: claves principales (Id) y ORM (por ejemplo, NHibernate)
- 20. Formateo de texto en la etiqueta WinForm
- 21. Uso de NHibernate con Fluent en la aplicación comercial
- 22. Aplicación de ejemplo de Java EE
- 23. muelle de aplicación de ejemplo MVC Web
- 24. WinForm conversión Para Wpf
- 25. Cómo detectar excepciones al cargar .NET WinForm aplicación user.config archivo?
- 26. ¿Es posible ocultar winform en la pestaña de la aplicación TaskManager?
- 27. WinForm aplicación se bloquea la interfaz de usuario durante la Operación
- 28. Aplicación de ejemplo para Rails 3?
- 29. Ejemplo de aplicación .net utilizando Amazon SQS
- 30. NHibernate qué caché usar para la aplicación WinForms
Gracias por el enlace, ya probé esta aplicación de muestra hace un tiempo. La documentación incluida en el zip es interesante. Me gustaría encontrar algunos otros artículos como este. ¿Sabes si el autor ha publicado una secuela? –
No sé de ninguna parte de mi cabeza. El artículo tiene información útil e interesante. Sin embargo, la búsqueda de Google arroja mucha otra información. –
Me gustaría encontrar algo directamente utilizable, como las toneladas y toneladas de plataforma de blog que puede encontrar, pero para nHibernate. Y Winform :). –