我有一个班,bill medicine,这是许多对许多表的bill和medicine。
Billmedicine映射文件是:
<class name="BillMedicine" table="Bill_Medicine">
<composite-id>
<key-many-to-one name="Bill" class="Bill" column="BillID" />
<key-many-to-one name="Medicine" class="Medicine" column="MedicineID" />
</composite-id>
<version name="LastModifiedOn" column="LastModifiedOn" type="DateTime"
access="field.pascalcase-underscore" />
<property name="Quantity" column="QuantityPurchased" />
</class>
当我创建新的BillMedicine并更新我的单元测试成功的数量时。但是,如果取消对药品更新行的注释,我会得到异常
NHibernate.StaleObjectStateException: Row was updated or deleted by another transaction
BillMedicineRepository target = new BillMedicineRepository();
BillMedicine billMedicine =
new BillMedicine { Bill = _bill, Medicine = _medicine1, Quantity = 1 };
target.AddBillMedicine(billMedicine);
//billMedicine.Medicine = _medicine2;
billMedicine.Quantity = 2;
target.UpdateBillMedicine(billMedicine); // Exception if I update the medicine
我检查过NHibernate显示的SQL,它没有更新药物
UPDATE Bill_Medicine SET LastModifiedOn = @p0, QuantityPurchased = @p1
WHERE BillID = @p2 AND MedicineID = @p3 AND LastModifiedOn = @p4;
编辑:
我的问题:
1-为什么只更新数量有效,但更新药物会引发异常?
2-是否可以使NHIBERNATE更新药物属性?如果是,怎么办?如果没有,有人能建议一个解决方法吗?