C# NHibernate映射按代码映射级联选项

C# NHibernate映射按代码映射级联选项,c#,nhibernate,dictionary,nhibernate-mapping,mapping-by-code,C#,Nhibernate,Dictionary,Nhibernate Mapping,Mapping By Code,我有一本字典上的以下课程: public class Entity1 { public Dictionary<Entity2,Entity3> Targets { get; set; } } 我正在寻找一种方法,将不同的级联选项设置为KeyMapping,将不同的级联选项设置为ValueMapping。 但我只能在主“集合映射”中找到cascade 我希望键具有Cascade.None-因为应用程序的不同部分管理该实体,而值具有Cascade.AllDeleteOrpha

我有一本字典上的以下课程:

public class Entity1 
{
    public Dictionary<Entity2,Entity3> Targets { get; set; }
}
我正在寻找一种方法,将不同的级联选项设置为KeyMapping,将不同的级联选项设置为ValueMapping。 但我只能在主“集合映射”中找到cascade

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

我怎样才能用MbC做到这一点

另外,如果我将“CollectionMapping”的级联设置为它反映的实体是什么


我正在nuget上使用最新的Nhibernate。

集合上的AFAIK级联选项仅影响集合的值。具有级联。集合上的所有:

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();
}

这并没有回答如何为键映射不同的级联的问题,而且我更关心映射中键/值的删除级联(我可以自己检查默认级联,我想知道如何配置它),因为级联不会影响映射的键,它基本上是
级联。键没有。无法为集合的键设置级联
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();
}