I have a scenario where I need to do the following in a transaction: 1. Save a model with a unique key 2. Delete that model 3. Save a new model with the same unique key the first one had.
I'd expect this to work just fine, but I get a unique key violation.
NH Profiler also shows that the delete statement is not issued before the second insert.
My mapping looks as follows:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHTest"> <class name="UniqueKeyModel" table="UniqueKeyModels"> <id name="Id"> <generator class="hilo"/> </id> <property name="TheVal" unique-key="valuniqueness" type="System.String"></property> </class> </hibernate-mapping>
My model:
public class UniqueKeyModel { public virtual long Id { get; private set; } public virtual string TheVal { get; set; } }
My Testcase:
ISession sess = ...; UniqueKeyModel mFirst = new UniqueKeyModel { TheVal = "value" }; sess.Save(mFirst); sess.Delete(mFirst); UniqueKeyModel mSecond = new UniqueKeyModel { TheVal = "value" }; sess.Save(mSecond);