NHibernate 是否可以流畅地配置为在子项引用设置为 null 时删除子项?

发布于 2024-09-06 18:04:49 字数 93 浏览 3 评论 0原文

我听说这也可以通过触发器来完成,但如果可以的话我宁愿不走那条路。现在看来,清空对子对象的引用只会使它们在数据库中成为孤立对象,至少可以说这并不理想。

谢谢!

I've heard this can also be accomplished with triggers, but I'd rather not go that road if I can. Right now it seems like nulling references to child objects just leaves them orphaned in the database, which isn't ideal to say the least.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晨与橙与城 2024-09-13 18:04:49

您可以设置级联选项来删除孤立对象:

HasMany(x => x.Children).KeyColumn("ParentId").AsBag().Inverse()
    .Cascade.AllDeleteOrphan();

要实现此操作,您需要从父对象集合中删除子对象并刷新会话:

using (var txn = session.BeginTransaction())
{
    parent.Children.Remove(child);
    txn.Commit();
}

You can set the cascade option to delete orphans:

HasMany(x => x.Children).KeyColumn("ParentId").AsBag().Inverse()
    .Cascade.AllDeleteOrphan();

To make this work you need to remove the child object from the parent's collection and flush the session:

using (var txn = session.BeginTransaction())
{
    parent.Children.Remove(child);
    txn.Commit();
}
人心善变 2024-09-13 18:04:49

我这里没有 Fluent.NH,但我知道您可以指定映射的级联类型。将其设置为 all-delete-orphan 应该可以满足您的要求。

如果您使用基于约定的配置,这应该为您提供一个起点。

级联保存流畅的 NHibernate 自动映射

I don't have Fluent.NH here but I know you can specify the cascade type for a mapping. Setting it to all-delete-orphan should do what you're asking.

If you're using convention based configuration this should give you a starting point..

Cascade Saves with Fluent NHibernate AutoMapping

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文