Eso sirve sólo cuando las grabaciones se hacen por código de usuario, pero cuando NH decide grabar porque tiene grabaciones pendientes y al hacer una consulta graba... lo tuyo ya no sirve.
A nivel de dao ya lo tengo... pero al nivel que comento lo tuyo no basta On 4 feb, 14:29, "[email protected]" <[email protected]> wrote: > using (var session = sessionFactory.OpenSession()) > using (var tx = session.BeginTransaction()) > { > try { > ..... > session.Update(obj); > ..... > > tx.Commit(); > } catch (Exception ex) { > tx.Rollback(); > if (ex is StaleStateException) > throw new DataConcurrencyException("blablabla", ex); > throw new MyException("blablabla", ex); > } > > } > > también podés hacer 2 catch, uno para StaleStateException y otro para > Exception y copiar en ambos la línea del Rollback, a gusto del > consumidor. > > Algo que tenes que tener en cuenta es que una vez que una exception es > lanzada desde nh la session deja de ser "estable", por lo que lo mejor > es cerrarla y abrir una nueva (en este código se hace porque después > de la excepción está el dispose, pero si no fuese así te tenés que > asegurar de cerrarla. > > saludos > nelo > > 2011/2/4 Juan Cuello <[email protected]>: > > > > > > > > > Hola a todos, > > > Debido a que estamos desarrollando un proyecto con arquitectura > > desacoplada, nos encontramos con un problema en la gestión de > > concurrencia. El problema es que cuando salta una excepción de > > concurrencia StaleStateException, queremos automatizar que en realidad > > se lance una excepción de nuestro framework. > > > La idea que he tenido es agregar un listener que herede por ejemplo de > > DefaultUpdateEventListener para hacer lo siguiente: > > > protected override object > > PerformSaveOrUpdate(NHibernate.Event.SaveOrUpdateEvent @event) > > { > > try > > { > > return base.PerformSaveOrUpdate(@event); > > } > > catch (StaleStateException ex) > > { > > throw new DataConcurrencyException(ex.Message, ex); > > } > > } > > > Para la concurrencia, que sólo saltaría en updates (lógicamente), de > > qué clase debo heredar: DefaultUpdateEventListener, > > DefaultSaveEventListener, DefaultSaveOrUpdateEventListener, > > DefaultSaveOrUpdateCopyEventListener????? > > > A alguien se le ocurre una forma mejor de hacer esto? > > > Muchas gracias > > > -- > > Para escribir al Grupo, hágalo a esta dirección: > > [email protected] > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
