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].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to