【问题标题】:How Nhibernate do with insert, update, deleteNhibernate 如何处理插入、更新、删除
【发布时间】:2011-07-14 15:52:34
【问题描述】:

谁能解释 NHibernate 在以下情况下的行为:

  1. 插入
  2. 更新
  3. 删除

如果 Parent/Child 集合带有 inverss - non inverse , cascadea ll, cascade all delete orphan.

我想知道执行上述每个案例的规则。

提前致谢

【问题讨论】:

    标签: nhibernate fluent-nhibernate nhibernate-mapping


    【解决方案1】:

    试试看这里:

    NHibernate Cascades: the different between all, all-delete-orphans and save-update

    或这里:

    Nhibernate Cascade

    也在这里:

    NHibernate Definitive Cascade application guide

    更新

    这里你可以找到inverse的一个很好的解释:

    Inverse Attribute in NHibernate

    这些是级联差异:

    1. cascade="none",默认值,告诉 Hibernate 忽略关联。
    2. cascade="save-update" 告诉 Hibernate 在 事务被提交并且当一个对象被传递给 save() 或 update() 并保存新实例化的瞬态实例并将更改持久保存到 分离的实例。
    3. cascade="delete" 告诉 Hibernate 导航关联并删除持久性 将对象传递给 delete() 时的实例。
    4. cascade="all" 表示同时级联保存更新和删除,以及 调用驱逐和锁定。
    5. cascade="all-delete-orphan" 的含义与 cascade="all" 相同,但此外, Hibernate 删除任何已被移除的持久实体实例 (取消引用)来自关联(例如,来自集合)。
    6. cascade="delete-orphan" Hibernate 将删除任何持久实体 已从关联中删除(取消引用)的实例(例如 例如,来自一个集合)。

    【讨论】:

    • 感谢 Danyolgiax 的链接,但我正在寻找有关 NHibernate 如何决定执行 sql 语句以及它如何安排它的一些知识。例如,如果我们有一对多关系或父/子集合,如果我们将其映射为反向或不映射,以及使用 Cascade All、CascadeAllDeleteOrphan 或没有级联,Nhibernate 在每种情况下将采取什么决定以及生成的 sql 语句的顺序。谢谢
    • 请引用您的来源以了解级联差异。它们似乎来自 Hibernate in Action。
    • @fgb 我发现它在谷歌上搜索
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多