2008-09-23 20 views

Respuesta

16

NHibernate, de forma predeterminada, admite simultaneidad optimista. La concurrencia pesimista, por otro lado, puede lograrse a través del método ISession.Lock().

Estos problemas se discuten en detalle en this document.

+0

Gracias Jon por la respuesta rápida :-) –

+3

Documentos de transacciones y concurrencia ahora aquí: http://nhforge.org/doc/nh/en/index .html # transacciones –

+0

Documentos ahora aquí: http://nhibernate.info/doc/nh/en/index.html#transactions –

22

NHibernate admite 2 tipos de concurrencia optimista.

Puede hacer que verifique los campos sucios usando el atributo "optimistic-lock = dirty" en el elemento "class" en sus archivos de mapeo o puede usar "optimistic-lock = version" (que también es el predeterminado) . Si está utilizando la versión, debe proporcionar un elemento "versión" en su archivo de mapeo que se asigna a un campo en su base de datos.

La versión puede ser del tipo Int64, Int32, Int16, Ticks, Timestamp o TimeSpan y se incrementan automáticamente al guardar. Consulte Chapter 5 en la documentación de NHibernate para obtener más información.

+3

Capítulo 5 de los documentos ahora aquí: http://nhforge.org /doc/nh/en/index.html#mapping –

2

También puede 'simplemente' comparar manualmente los números de versión (suponiendo que haya agregado una propiedad de Versión a su entidad).

Claramente optimista es la única opción en su sano juicio. A veces, por supuesto, tenemos que lidiar con escenarios locos ...

Cuestiones relacionadas