저는 레거시 코드로 작업하고 있습니다. (가능한 한 조금 변경하고 싶습니다.) 많은 관계를 맺으려면 약간의 문제가 있습니다.Hibernate 부모를 삭제할 때 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