Nhibernate 如何处理插入、更新、删除
Posted
技术标签:
【中文标题】Nhibernate 如何处理插入、更新、删除【英文标题】:How Nhibernate do with insert, update, delete 【发布时间】:2011-07-14 15:52:34 【问题描述】:谁能解释 NHibernate 在以下情况下的行为:
-
插入
更新
删除
如果 Parent/Child 集合带有 inverss - non inverse , cascadea ll, cascade all delete orphan.
我想知道执行上述每个案例的规则。
提前致谢
【问题讨论】:
【参考方案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
这些是级联差异:
-
cascade="none",默认值,告诉 Hibernate 忽略关联。
cascade="save-update" 告诉 Hibernate 在
事务被提交并且当一个对象被传递给 save() 或
update() 并保存新实例化的瞬态实例并将更改持久保存到
分离的实例。
cascade="delete" 告诉 Hibernate 导航关联并删除持久性
将对象传递给 delete() 时的实例。
cascade="all" 表示同时级联保存更新和删除,以及
调用驱逐和锁定。
cascade="all-delete-orphan" 的含义与 cascade="all" 相同,但此外,
Hibernate 删除任何已被移除的持久实体实例
(取消引用)来自关联(例如,来自集合)。
cascade="delete-orphan" Hibernate 将删除任何持久实体
已从关联中删除(取消引用)的实例(例如
例如,来自一个集合)。
【讨论】:
感谢 Danyolgiax 的链接,但我正在寻找有关 NHibernate 如何决定执行 sql 语句以及它如何安排它的一些知识。例如,如果我们有一对多关系或父/子集合,如果我们将其映射为反向或不映射,以及使用 Cascade All、CascadeAllDeleteOrphan 或没有级联,Nhibernate 在每种情况下将采取什么决定以及生成的 sql 语句的顺序。谢谢 请引用您的来源以了解级联差异。它们似乎来自 Hibernate in Action。 @fgb 我发现它在谷歌上搜索以上是关于Nhibernate 如何处理插入、更新、删除的主要内容,如果未能解决你的问题,请参考以下文章
Delphi 用dbnavigator和dbgrid链接以后,使用dbnavigator控件的删除时会使程序崩溃,该如何处理
如何处理访问 SQL Server 数据库的应用程序的权限?