When you use dynamic-update="true" optimistic-lock="all", NH will issue an 
update like
 
update <table> set <col1>=<newval1>, <col2>=<newval2>, ... where 
<idcol>=<idval> and <col1>=<oldval1> and <col2>=<oldval2>.
 
<col1>, <col2>, ... are the columns that NH thinks you have modified from 
their original values.  If the instance is attached, that works.  But if 
the instance is detached, NH has no way to figure out the original values 
of the columns.  So you also need select-before-update.  That causes a 
select (to get the "original" values) before the update, but that select 
happens after you have made your change via SSMS.  One option would be to 
reattach the instance before updating it with the new values in the grid, 
e.g., doing someting like session.Lock(instance, LockMode.None) (I may have 
the syntax wrong).  If you don't need to use dynamic-update, you might be 
better off using a timestamp column for concurrency control.
 
Mike
 

On Friday, June 1, 2012 8:05:49 AM UTC-4, imonsei wrote:

> I have defined a class, and set 
>
> dynamic-update="true" optimistic-lock="all" select-before- 
> update="true" 
>
> in my tabledefiniton hbm.xml file. 
> I start my program and load my data in displaying it in a 
> datagridview. 
> Next I load up sql management studio (mssql2008 express), connect to 
> the database, and alter an entry in the table i have just loaded into 
> the program. 
> Meanwhile in the program I make sure the change has not propergated 
> into the datagridview. 
> Now I change something in the row I had altered with sql management 
> studio. 
> I save my change from the datagridview to the database. 
>
> What I expected was an exception being thrown by the program, but 
> instead I find that the change I made with sql management studio has 
> been overwritten completely with the other data from my program. 
>
> Can anyone take a stab at where I go wrong? 
> PS. just say and I'll post the code I use, if you need it.

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/HOscx0WG0i8J.
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