Ich habe ein Problem mit Viele-zu-Viele-Zuordnung mit NHibernate. Grundsätzlich habe ich zwei Klassen in meinem Objektmodell (Scenario und Skill), die auf drei Tabellen in meiner Datenbank (Scenario, Skill und ScenarioSkill) abbilden. Die Tabelle "ScenarioSkills" enthält nur die IDs der SKill- und Szenariotabelle (SkillID, ScenarioID).NHibernate-Viele-zu-Viele-Zuordnung
Im Objektmodell verfügt ein Szenario über einige allgemeine Eigenschaften und eine Liste verknüpfter Fähigkeiten (IList), die aus der Tabelle ScenarioSkills abgerufen werden. Es gibt keine verknüpfte IList of Scenarios für das Skill-Objekt.
Die Abbildung von Szenario und Fähigkeit zu ScenarioSkill ist eine many-to-many-Beziehung:
Szenario * --- * ScenarioSkill * --- * Geschicklichkeit
ich die Listen als Beutel kartiert aus weil ich glaube, dass dies die beste Option ist, um aus dem, was ich gelesen habe, zu verwenden. Die Zuordnungen sind wie folgt:
Im Szenario Klasse
<bag name="Skills" table="ScenarioSkills">
<key column="ScenarioID" foreign-key="FK_ScenarioSkill_ScenarioID"/>
<many-to-many class="Domain.Skill, Domain" column="SkillID" />
</bag>
Und innerhalb der Fähigkeit Klasse
<bag name="Scenarios" table="ScenarioSkills" inverse="true" access="noop" cascade="all">
<key column="SkillID" foreign-key="FK_ScenarioSkill_SkillID" />
<many-to-many class="Domain.Scenario, Domain" column="ScenarioID" />
</bag>
Alles funktioniert gut, außer wenn ich versuche, eine Fähigkeit zu löschen, kann es nicht so tun Es gibt eine Referenzbeschränkung für die Spalte "SkillID" der Tabelle "ScenarioSkill". Kann mir jemand helfen?
Ich verwende NHibernate 2 auf einer C# asp.net 3.5 Web-Anwendungslösung.
Ich sehe, was sich hier sagen, und ja, ich könnte eine benutzerdefinierte Methode für das Lösch enthalten - ich hatte gehofft, dass ich es durch die Zuordnung umgehen konnte Verwenden Sie jedoch die Kaskadeneinstellung. Scheint aber ein Schmerz der Hintern zu sein. – Scozzard