Question

I have the following class with a Dictionary :

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

Mapped currently by this code :

    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")));

I am looking for a way to set different cascade option to the KeyMapping, and a different one to the ValueMapping. But i can find cascade only in the main "Collection Mapping"

I want the key to have Cascade.None - because a different part of the application manages that entity, and the Value to have Cascade.AllDeleteOrphan.

How can i do that with MbC ?

plus - if i set the "CollectionMapping"'s Cascade - to what Entity does it reflect?

I am using the latest Nhibernate on nuget.

Was it helpful?

Solution

AFAIK Cascading options on Collections only effect the values of the collection. Having Cascade.All on the collection:

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();
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top