NHibernate 中的自动更新包

Posted

技术标签:

【中文标题】NHibernate 中的自动更新包【英文标题】:Auto-updating Bags in NHibernate 【发布时间】:2010-09-12 08:17:27 【问题描述】:

我使用 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>

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

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

【问题讨论】:

能说一下什么问题吗?是否与会话相关? 问题主要是在应用程序中,如果你将更多的项目保存到数据库中,如果拥有这些项目的包的对象想要能够访问它们,则必须刷新对象。 【参考方案1】:

您是否尝试过 NHibernate 级联,例如 save-update?

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

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

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

更多信息在这里: NHibernate Cascades: the different between all, all-delete-orphans and save-update

【讨论】:

以上是关于NHibernate 中的自动更新包的主要内容,如果未能解决你的问题,请参考以下文章

NuGet自动更新特定包

Ubuntu Server : 自动更新

python 通过在包的根目录中的某个位置自动更新sublime文本包

NHibernate中的批量更新

如何更新 Nhibernate 中的 varchar 列长度?

APIM 中的自动更新 OpenAPI 规范