この質問を投稿する前に、NH バージョニングに関する多くの例を見てきましたが、それらすべてが以下のコードを使用していることを示しています。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 を使用しています