NHibernate公式具有标量函数

时间:2016-05-26 13:55:10

标签: nhibernate nhibernate-mapping

我的对象中有一个使用公式映射的属性,它是一个动态值,由我的db中定义的标量函数给出

这是我的映射:

<property name="StatusId" type="Int32" formula="(SELECT dbo.FN_GET_STATUS(ID))"/>

当我从会话工厂调用GetById函数时,此属性为我提供了正确的值。但是当我保存一个新创建的对象时,我没有获得该属性的值。有没有办法可以修复它或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

尝试使用内置设置 generated="insert"

5.1.10. property

<property
    name="propertyName"                 (1)
    ...
    generated="never|insert|always"     (8)
  

... (8) generated(可选 - 默认为never):指定此属性值实际由数据库生成。请参见第5.5节“生成的属性”的讨论。

5.5. Generated Properties

  

生成的属性是由数据库生成其值的属性。通常,NHibernate应用程序需要刷新包含数据库生成值的任何属性的对象。但是,将属性标记为已生成,可让应用程序将此职责委托给NHibernate。实质上,只要NHibernate为已定义生成属性的实体发出SQL INSERT或UPDATE,它就会立即发出一个select来检索生成的值。