0
我剛開始使用NHibernate。直到現在發現它還不錯,但遇到了一個我無法解決的問題。任何幫助將不勝感激。Nhibernate <version>功能不起作用
我正在嘗試使用「版本」功能來幫助實現優化鎖定。以下是我的映射文件和相關類的一部分代碼。我的問題是,無論我修改任何字段多少次,數據庫上的「版本」列都不會更新。
我的映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="MyTest"
assembly ="MyTest">
<class name="Project" table="dbo.M_Project">
<id name="ProjectId" type="Int32" unsaved-value="null">
<column name="ProjectId" sql-type="int" not-null="true" unique="true" />
<generator class="native" />
</id>
<version name="Version" column="Version"/>
<property name="ProjectName" type="String">
<column name="ProjectName" length="100" sql-type="nvarchar" not-null="true"/>
</property>
<property name="Updated" type="bool">
<column name="Updated" sql-type="bit" not-null="true"/>
</property>
<property name="NoOfItemsWithExceptions" type="int">
<column name="NoOfItemsWithExc" sql-type="int" not-null="true"/>
</property>
<property name="MenuState" type="int">
<column name="MenuState" sql-type="int" not-null="true"/>
</property>
<property name="Initialized" type="bool">
<column name="Initialized" sql-type="bit" not-null="true"/>
</property>
<property name="InventoryRun" type="bool">
<column name="InventoryRun" sql-type="bit" not-null="true"/>
</property>
<property name="ProductionForecastRun" type="bool">
<column name="ProductionForecastRun" sql-type="bit" not-null="true"/>
</property>
<property name="MonthlyUpdate" type="bool">
<column name="MonthlyUpdate" sql-type="bit" not-null="true"/>
</property>
<bag name="SKUList" table="dbo.P_SKU" inverse="true" lazy="true" cascade="save-update">
<key column="ProjectId" />
<one-to-many
class="SKU"/>
</bag>
</class>
</hibernate-mapping>
關聯的版本屬性:
private int _version;
public virtual int Version
{
get { return _version; }
set { _version = value; }
}
謝謝!
我的理解是,樂觀鎖屬性應該是「版」(默認值),如果意圖是有樂觀鎖在所有的領域。不過,我確實嘗試了「髒」,但沒有奏效。 – RHK 2010-07-23 21:32:25