1

我正在使用具有由视图计算的属性的实体。在我的示例场景中:

  1. 我正在从数据库中获取实体,并且正在更改该实体的一些属性
  2. 我正在保存这个实体 session.Update(entity)
  3. 我正在调用 session.Refresh(entity) ,因为视图计算的某些列可能会因我的更改而更改。

因此,NHibernate 如果被迫对数据库进行三次访问。

我想要实现的是只有两次旅行:

  1. 我正在从数据库中获取实体,并且正在更改该实体的一些属性
  2. 我在一次数据库之旅中保存了这个实体 session.Update(entity) 和刷新。

是否可以?

4

1 回答 1

4

不,这是不可能的。您必须发出三个 SQL 命令:选择、更新、选择。NHibernate 确实支持批处理,但它将插入或更新批处理在一起,而不是混合命令。

此外,NHibernate 支持Generated Properties,因此您不必手动更新这些列(它仍然需要往返,但它是透明的)

于 2012-11-23T13:50:56.700 回答