NHibernate版本控制 - 调用ISession.Save后的异常

时间:2013-02-12 15:41:52

标签: nhibernate nhibernate-mapping mapping-by-code

在发布这个问题之前,我已经看过很多关于NH Versioning的例子,所有这些都告诉我使用下面的代码;我可以使用MappingByCode实现版本化实体:

Version(e => e.MyVersion, vm => {
     vm.Generated(VersionGeneration.Always);
     vm.UnsavedValue(0);
});

我希望分配MyVersion应该由SQL Server完成。所以当我调用ISession.Save或ISession.SaveOrUpdate时; NHProf显示生成的sql不包含传递给Insert语句的MyVersion参数(如预期的那样),但查询执行失败,因为SQL Server不生成它;结果是cannot insert null value into MyVersion column...错误。

我对VersionGeneration.Always的期望是正确的吗?那有什么不对?

我正在使用NHibernate 3.3 / SQL Server 2012

1 个答案:

答案 0 :(得分:2)

VersionGeneration.Always意味着NHibernate应该期望数据库系统在INSERT和UPDATE上生成版本号。

但是你还需要告诉SQL Server它应该生成数字... 例如,请参阅http://msdn.microsoft.com/en-us/library/ms182776.aspx