1

我有以下带有 Dictionary 的课程:

public class Entity1 
{
    public Dictionary<Entity2,Entity3> Targets { get; set; }
}

当前由此代码映射:

    Map(x => x.Targets,
        m => m.Key(k => k.Column("Entity1ID")),
        km => km.ManyToMany(mtm => mtm.Column("Entity2ID")),
        vm => vm.ManyToMany(mtm => mtm.Column("Entity3ID")));

我正在寻找一种方法来为 KeyMapping 设置不同的级联选项,并为 ValueMapping 设置不同的选项。但我只能在主要的“集合映射”中找到级联

我希望密钥具有 Cascade.None - 因为应用程序的不同部分管理该实体,并且值具有 Cascade.AllDeleteOrphan。

我怎么能用 MbC 做到这一点?

另外-如果我将“CollectionMapping”的级联设置-它反映了什么实体?

我在 nuget 上使用最新的 Nhibernate。

4

1 回答 1

2

集合上的 AFAIK 级联选项仅影响集合的值。收藏Cascade.All

var e2 = new Entity2();
using (var tx = session.BeginTransaction())
{
    session.Save(e2);

    session.Save(new Entity1 { Dictionary = { { e2, new Entity3() } } }); // should work
    session.Save(new Entity1 { Dictionary = { { new Entity2(), new Entity3() } } }); // does not work

    tx.Commit();
}
于 2013-11-04T17:29:07.430 回答