Je viens de commencer à travailler avec NHibernate. Je l'ai trouvé assez bien jusqu'à maintenant mais j'ai rencontré un problème que je suis incapable de résoudre. Toute aide est la bienvenue. J'essaie d'utiliser la fonctionnalité "version" pour aider à mettre en œuvre le verrouillage optmiste. Ci-dessous, mon fichier de mappage et une partie du code de la classe associée. Mon problème est que, peu importe le nombre de fois que je modifie un champ, la colonne "Version" de la base de données n'est pas mise à jour.Nhibernate <version> fonctionnalité ne fonctionne pas
Mon fichier de mapping:
<?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>
La propriété version associée:
private int _version;
public virtual int Version
{
get { return _version; }
set { _version = value; }
}
Merci!
Ma compréhension est que la propriété optimistic-lock doit être « version » (par défaut) si l'intention est d'avoir le verrouillage optimiste sur tous les champs. Cependant j'ai essayé "sale" mais cela n'a pas fonctionné. – RHK