У меня есть сценарий, в котором мне нужно сделать следующее в транзакции:
1. Сохраните модель с уникальным ключом
2. Удалить эту модель
3. Сохраните новую модель с тем же уникальным ключом, который был у первого.
Я ожидаю, что это будет работать нормально, но получаю уникальное нарушение ключа.
NH Profiler также показывает, что оператор удаления не выполняется перед второй вставкой.
Мое отображение выглядит следующим образом:
<?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>
Моя модель:
public class UniqueKeyModel
{
public virtual long Id { get; private set; }
public virtual string TheVal { get; set; }
}
Мой тестовый случай:
ISession sess = ...;
UniqueKeyModel mFirst = new UniqueKeyModel { TheVal = "value" };
sess.Save(mFirst);
sess.Delete(mFirst);
UniqueKeyModel mSecond = new UniqueKeyModel { TheVal = "value" };
sess.Save(mSecond);