我在使用 NHibernate 进行多对多映射时遇到问题。基本上我的对象模型中有 2 个类(场景和技能)映射到数据库中的三个表(场景、技能和场景技能)。ScenarioSkills 表只保存 SKill 和 Scenario 表的 ID(SkillID、ScenarioID)。
在对象模型中,Scenario 有几个通用属性和一个从 ScenarioSkills 表中获得的相关技能列表 (IList)。Skill 对象没有关联的 IList of Scenarios。
从 Scenario 和 Skill 到 ScenarioSkill 的映射是多对多的关系:
场景 * --- * 场景技能 * --- * 技能
我已将列表绘制为袋子,因为我相信这是我所阅读的最佳选择。映射如下:
在场景类中
<bag name="Skills" table="ScenarioSkills">
<key column="ScenarioID" foreign-key="FK_ScenarioSkill_ScenarioID"/>
<many-to-many class="Domain.Skill, Domain" column="SkillID" />
</bag>
在技能类中
<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>
一切正常,除了当我尝试删除一项技能时,它不能这样做,因为 ScenarioSkill 表的 SkillID 列上有一个引用约束。谁能帮我?
我在 C# asp.net 3.5 Web 应用程序解决方案上使用 NHibernate 2。