在发布这个问题之前,我已经看过很多关于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
答案 0 :(得分:2)
VersionGeneration.Always意味着NHibernate应该期望数据库系统在INSERT和UPDATE上生成版本号。
但是你还需要告诉SQL Server它应该生成数字... 例如,请参阅http://msdn.microsoft.com/en-us/library/ms182776.aspx。