Maybe I don't understand your logic, but what are you expecting exactly? To get a StaleObjectStateException?
You have already gone to the DB, and you have two row versions to compare, one in the DTO and one in the fresh-loaded persistent instance. If they don't match, you can fail immediately, without going to the DB again. Diego On Fri, Apr 16, 2010 at 12:45, NK <[email protected]> wrote: > Hi, > > We use a DTO pattern in our application to send information to several > clients applications from our central business logic server which uses > NHibernate for ORM. We are trying to implement optimistic concurrency > control using the version property. The version is generated by the > database (SQL Server Timestamp column). > > Here is the sequence of actions > > Client 1 requests data > Session 1: > a. Load business object (RowVersion 1) > b. Copy business object properties to DTO along with row version > Session 1 closed > > Client 2 updates data of the same business object (RowVersion 2) > > Client 1 submits updated data > Session 2: > a. Load business object (RowVersion 2) > b. Update business object properties from DTO along with row version > (RowVersion 1) > c. Save business object and commit transaction > Session 2 closed > > In session 2, when the update statement is generated (call to public > void NullSafeSet(System.Data.IDbCommand cmd, object value, int index) > in our custom timestamp column), the "value" param is taken from the > business object loaded in the session, rather than the value updated > from the DTO. > > I have read forum posts saying that the RowVersion should not be > touched, but we cannot avoid this in a DTO pattern. Is there any way > to work around this? We are 2 years into the development and cannot > remove the DTO pattern. I am sure this is not a new problem and would > really appreciate any help. > > 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]<nhusers%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/nhusers?hl=en. > > -- 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.
