And re-load the objects, they are not in consistent state. On Tue, Jan 13, 2009 at 10:50 AM, Ayende Rahien <[email protected]> wrote:
> You cannot recover from transaction rollback.You have to create a new > session. > > > On Mon, Jan 12, 2009 at 8:00 PM, kzjkd6 <[email protected]> wrote: > >> >> >> We are trying to use nHibernate in a winform application. We are >> using it in a session-per-business-activity model with entities that >> are disconnected and then associated to sessions using SaveOrUpdate >> (). >> >> We have the following scenario: >> >> App loads entity in Session 1. >> Session 1 is closed. >> App make changes to entity in response to user interaction >> Session 2 is started >> Transaction is started >> Entity is associated with session >> Query is made (which triggers a Flush and as a result the version >> number is incremented on the dirty entity) >> As a result of the business rules evaluated on the query results we >> decide not to commit the transaction. >> Transaction is rolled back. >> Session 2 is closed. >> >> User is shown a message explaining the problem. >> User fixed the problem (screen still bound to the same entity) >> >> Session 3 is started >> Transaction is started >> Entity associated with Session >> Query is made again (which triggers another Flush and the version >> number is incremented yet again) >> Business Rule now satisfied >> Transaction is committed. >> --> Exception thrown because the version number no longer satisfies >> the optimistic lock. >> >> I know we could throw away the user's changes and re-fetch the entity >> when the business rule is initially violated but that represents a >> huge pain for the users. I know we could do this and then re-apply >> changes on the user's behalf but I am looking for a generic solution >> as the object graph can be quite deep. >> >> What is the recommend way to get around this? >> >> Thanks. >> >> >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "nhusers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nhusers?hl=en -~----------~----~----~----~------~----~------~--~---
