【问题标题】:How to prevent NHibernate to load child collection in one-to-many relationship when removing parent删除父对象时如何防止NHibernate以一对多关系加载子集合
【发布时间】:2012-09-04 13:05:38
【问题描述】:

我有 Company->Users 一对多的关系,我希望在删除公司时级联删除用户。问题是 NHibernate(根据控制台输出:我已将 Nhibernate 配置为将生成的 sql 记录到控制台)首先加载子集合,然后对每个子集合执行删除。如何配置 NHibernate 级联删除子集合而不加载它?

【问题讨论】:

    标签: nhibernate nhibernate-mapping cascading-deletes


    【解决方案1】:

    在此处查看此答案:https://stackoverflow.com/a/1323461/27343

    可能有一些优化空间,但实际上并没有那么糟糕,在某些情况下加载子代而不是试图盲目地执行一些 SQL 删除语句更好。

    NHibernate 支持“删除级联”选项

    <key column="column" on-delete="cascade" />
    

    但它仅在某些情况下有效。它会告诉您何时加载映射文件。

    【讨论】:

    • 所以有了这个配置,数据库负责删除孩子?是这样吗,如果子集合可以包含很多实体,是在 Db 中执行此操作还是在 NH 中执行此操作更好?
    • NH 将生成一个“on delete cascade”外键。如果你自己编写db schema,你需要创建这样一个外键。我想它总是更快,但并不总是可能的。你必须测试它。最后需要从数据库中取出数据,反正速度很慢。
    猜你喜欢
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多