NHibernate를 사용하여 다 대다 매핑에 문제가 있습니다. 기본적으로 내 데이터베이스 (Scenario, Skill 및 ScenarioSkill)의 세 테이블에 매핑되는 개체 모델 (Scenario and Skill)에 2 개의 클래스가 있습니다. ScenarioSkills 테이블에는 SKill 및 Scenario 테이블의 ID (SkillID, ScenarioID) 만 있습니다.NHibernate 다 대다 매핑
개체 모델에서 Scenario에는 몇 가지 일반 속성과 ScenarioSkills 테이블에서 가져온 관련 기술 (IList) 목록이 있습니다. 스킬 개체에 대한 시나리오의 IList는 없습니다.
시나리오 * --- * ScenarioSkill * --- * 스킬
내가 가방으로 목록을 매핑 한 : 다 대다 관계가
시나리오 및 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 웹 응용 프로그램 솔루션에서 NHibernate 2를 사용하고 있습니다.
나는 당신이 여기라고, 그래 내가 삭제에 대한 사용자 지정 방법을 포함 할 수있는 것을 볼 스킬에서 시나리오
에서
- 난 내가 매핑을 통해 처리 할 수 기대했다 캐스케이드 설정을 사용합니다. 비록 엉덩이가 아프다는 것을 증명하는 것 같습니다. – Scozzard