我们有一个NHibernate映射,我们必须使用自定义存储过程进行插入,更新和删除。我们的映射如下。
[HttpGet("Index")]
public async Task<IActionResult> Index([FromQuery(Name ="sortValue")]string sortValue,[FromQuery(Name ="showDeactivated")] bool showDeactivated)
由于某些遗留原因,我们使用<class name="MyNamespace.MyClass" table="[MYTABLE]">
<id name="Id" column="MYTABLE_ID"></id>
...
<sql-insert check="none">
EXECUTE SP_MY_TABLE_INSERT
@p1 = ?,
@p2 = ?
</sql-insert>
</class>
。
上面提到的存储过程将插入的ID作为标量返回。但是,当我们提交NHibernate事务时,返回的ID不会填充到实体实例中,因此我们仍然会在check="none"
属性中看到值0
。
我们如何教NHibernate将返回的标量视为插入的ID?
更新
我已尝试使用Id
生成器,但在我的理解中,这种情况可以解决这个问题,但我没有成功,trigger-identity
仍然是Id
。