C# NHibernate Cascade=保存更新;?

C# NHibernate Cascade=保存更新;?,c#,nhibernate,nhibernate-cascade,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; }

免责声明:我是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;
}
公共类实体1
{
公共虚拟Guid EntityId{get;set;}
公共虚拟IList实体2列表;
} 
公共类实体2
{
公共虚拟Guid EntityId{get;set;}
公共虚拟IList实体1列表;
}

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

是。在这种情况下,听起来“保存更新”是您想要的

我从未在文档中找到对每个级联选项的详细解释,但我使用了Ayende的这一点作为参考

  • -不要进行任何级联,让用户自己处理
  • 保存更新-保存/更新对象时,检查关联并保存/更新任何需要它的对象(包括在多对多方案中保存/更新关联)
  • 删除-删除对象时,删除关联中的所有对象
  • 删除孤立对象-删除对象时,删除关联中的所有对象。除此之外,当一个对象从关联中移除且与另一个对象(孤立)不关联时,也将其删除
  • all-当对象保存/更新/删除时,检查关联并保存/更新/删除找到的所有对象
  • 所有删除孤立对象-在保存/更新/删除对象时,请检查关联并保存/更新/删除找到的所有对象。除此之外,当一个对象从关联中移除且未与另一个对象关联(孤立)时,也将其删除