0
我正在使用遗留代码(所以我想尽可能少地改变它),而且我在这里有很多关系有点麻烦。NHibernate在删除父项时删除ManyToMany记录
下面是我有:
public class Feature {
List<Profile> Profiles{get;set;}
}
public class Profile{
List<FeatureProfile> Features{get;set;}
}
public class FeatureProfile {
Feature Feat {get;set;}
Profile Profile {get;set;}
}
和他们的映射是这样的:
mapper.Class<Feature>(m=>
m.Bag(x => x.Profiles, bagMap =>
{
bagMap.Table("FeatureProfile");
bagMap.Key(key=>key.Column("FeatureId"));
bagMap.Cascade(Cascade.All | Cascade.DeleteOrphans);
},map=>map.ManyToMany(manyToMany=>manyToMany.Column("ProfileId")))
);
mapper.Class<Profile>(m=>
m.Bag(x => x.Features, bagMap =>
{
bagMap.Key(key=>key.Column("ProfileId"));
bagMap.Inverse(true);
bagMap.Cascade(Cascade.All | Cascade.DeleteOrphans);
})
);
mapper.Class<FeatureProfile>(m=> {
m.ManyToOne(x => x.Profile, x => x.Column("ProfileId"));
m.ManyToOne(x => x.Feat, x => x.Column("FeatureId"))
});
我需要的是:当我删除功能,这是FeatureProfile的太删除。 请注意,我认为这可能工作在NHibernate 2.x
感谢您的答复,并采取这么长时间来回答对不起,我离开工作了周末前公布这一权利。 我改变了我的代码生成这个,但它仍然没有工作:(任何其他的想法? – Tejo
嗨,我刚刚重新测试了上述解决方案。事实上有一个错误(现在修复),因为级联应该是“ none“,任何其他设置都不会影响pair表,但是会影响关系的结束,所以这种类型的映射应该可以工作,当一个末端被移除时,所有的对都会被删除。你呢? –
现在是,非常感谢您的帮助。我可以通过代码映射来更改答案以显示等效代码吗? – Tejo