2

我使用 ASP.Net 和 NHibernate 访问 Pgsql 数据库。

对于我们的一些对象,我们使用 NHibernate 包,它映射到我们应用程序中的列表对象。有时,当我们更新与数据库中的列表有关的任何内容时,我们需要通过 NHibernate 刷新对象。

<bag name="Objects" inverse="true" lazy="true" generic="true" >
   <key column="object_id" />
   <one-to-many class="Object" />
</bag>

以上是我用于我们的包的代码示例。

我想知道是否有其他人在任何地方遇到过这个问题,以及您如何解决这个问题?

4

1 回答 1

4

您是否尝试过 NHibernate 级联,例如保存更新?

您可以告诉 NHibernate 自动遍历实体的关联,并根据级联选项进行操作。例如,使用 save-update 级联将未保存的实体添加到集合中将导致它与其父对象一起保存,而无需我们方面的任何明确说明。

以下是每个级联选项的含义:

  • none - 不做任何级联,让用户处理它们
  • 保存更新- 当对象被保存/更新时,检查关联并保存/更新任何需要它的对象(包括保存/更新多对多场景中的关联)。
  • delete - 当对象被删除时,删除关联中的所有对象。
  • delete-orphans - 当对象被删除时,删除关联中的所有对象。除此之外,当一个对象从关联中删除并且不与另一个对象关联(孤立)时,也将其删除。
  • all - 当一个对象被保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象。
  • all-delete-orphans - 保存/更新/删除对象时,检查关联并保存/更新/删除找到的所有对象。除此之外,当一个对象从关联中删除并且不与另一个对象关联(孤立)时,也将其删除。

更多信息: NHibernate Cascades:all、all-delete-orphans 和 save-update 之间的区别

于 2008-09-23T12:27:47.893 回答