映射
<class name="Project" optimistic-lock="version">
<id name="Id" column="ProjectID" type="guid" unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid.comb" />
</id>
<version name="Version" generated="always" type="Int32" unsaved-value="0">
<column name="Version" sql-type="int" not-null="true" />
</version>
<!-- properties -->
</class>
调试时,可以看到Version equals 0
。
public class Project {
public virtual Guid Id { get; protected set; }
public virtual Int32 Version { get; set; }
}
但是当发生保存异常时:
无法将值NULL插入“Version”列,表'XXXX.dbo.Project';列不允许空值。 INSERT失败。 声明已经终止。
为什么?
谢谢!
答案 0 :(得分:2)
generated="always"
表示数据库,而不是NHibernate,将生成此值,NH将在之后检索它。
如果不是这种情况,请删除该属性。实际上,您可以删除除name
之外的所有属性,因为您要将它们设置为默认值。
答案 1 :(得分:1)