我有一个场景需要在事务中执行以下操作: 1.使用唯一键保存模型 2.删除该模型 3.使用与第一个具有相同唯一键的新模型保存。
我希望这可以正常工作,但我会遇到一个独特的密钥违规行为。
NH Profiler还显示在第二次插入之前未发出delete语句。
我的映射如下:
<?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);
答案 0 :(得分:0)
我认为你应该在删除后刷新会话。刷新会话时,更改将写入数据库。 (如果您正在使用交易,则必须在刷新会话后开始新交易)