NHibernate Cascade =保存更新"?

Joh*_*ohn 12 c# nhibernate nhibernate-cascade

免责声明:我是一名NHibernate noobie,所以希望这个问题有道理.我有两个类之间的多对多关系,比如......

public class Entity1
{
    public virtual Guid EntityId { get; set; }
    public virtual IList<Entity2> Entity2List;
} 

Public class Entity2
{
    public virtual Guid EntityId { get; set; }
    public virtual IList<Entity1> Entity1List;
}
Run Code Online (Sandbox Code Playgroud)

我在两个类映射中都添加了一个多对多关系,定义了一个关联表但不确定要使用哪个级联选项.我希望能够创建一个新的Entity1实例,将新的Entity2实例添加到它的列表中,调用Save,并将两者都插入到数据库中(反之亦然).删除实体时,它应删除与子实体的任何关联,但不删除子实体本身.我应该使用cascade ="save-update"吗?

g .*_*g . 26

是.在这种情况下,听起来像你想要的"保存更新".

我从未在文档中找到关于每个级联选项的很好的解释,但是已经使用Ayende的这篇文作为参考.

  • none - 不做任何级联,让用户自己处理它们.
  • save-update - 保存/更新对象时,检查关联并保存/更新任何需要它的对象(包括在多对多方案中保存/更新关联).
  • delete - 删除对象时,删除关联中的所有对象.
  • delete-orphan - 删除对象时,删除关联中的所有对象.除此之外,当从关联中删除对象而不与另一个对象(孤立对象)关联时,也删除它.
  • all - 当对象保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象.
  • all-delete-orphan - 当一个对象被保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象.除此之外,当从关联中删除对象而不与另一个对象(孤立对象)关联时,也删除它.