In NHibernate, I want to retrieve an instance, and put an exclusive
lock on the record that represents the retrieved entity on the
database.
Right now, I have this code:
With.Transaction (session, IsolationLevel.Serializable, delegate
{
ICriteria crit = session.CreateCriteria (typeof
(TarificationProfile));
crit.SetLockMode (LockMode.Upgrade);
crit.Add (Expression.Eq ("Id", tarificationProfileId));
TarificationProfile profile =
crit.UniqueResult<TarificationProfile> ();
nextNumber = profile.AttestCounter;
profile.AttestCounter++;
session.SaveOrUpdate (profile);
});
As you can see, I set the LockMode for this Criteria to 'Upgrade'.
This issues an SQL statement for SQL Server which uses the `updlock`
and `rowlock` locking hints:
SELECT ... FROM MyTable with (updlock, rowlock)
However, I want to be able to use a real exclusive lock. That is,
prevent that others can read this very same record, until I have
released the lock.
In other words, I want to be able to use an `xlock` locking hint,
instead of an `updlock`.
I don't know how (or even if) I can achieve that .... Maybe somebody
can give me some hints about this :)
If it is really necessary, I can use the SQLQuery functionality of
NHibernate, and write my own SQL Query, but, I'd like to avoid that as
much as possible.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---