2010-12-28 8 views
1

NHibernate (3.0)를 배우기 시작했고 Packt Publishing의 NHibernate 3.0 Cookbook 복사본을 가져 왔습니다.내 NHibernate 책이 잘못 되었습니까?

내 데이터베이스를 통해 걷고 있지만 일대 다 매핑에 관한 섹션이 있습니다. 나는 다음과 같은 오류가이 작업을 실행하면

<class name="Customer" table="tblCustomer"> 
    <id name="Id"> 
    <column name="CustomerID" sql-type="int" not-null="true"/> 
    <generator class="identity"/> 
    </id> 

    <property name="CustomerName" column="Customer"/> 
    <list name="Domains"> 
    <key column="CustomerID"/> 
    <one-to-many class="Domain" /> 
    </list> 
</class> 

:

public class Customer 
{ 
    public virtual int Id { get; protected set; } 
    public virtual string CustomerName { get; set; } 
    // Customer has many domains 
    public virtual IList<Domain> Domains { get; set; } 
} 

public class Domain 
{ 
    public virtual int Id { get; protected set; } 
    public virtual int CustomerID { get; set; } 
    public virtual string DomainName { get; set; } 
} 

고객 매핑 : 내가 고객과 고객의 도메인간에 많은 관계로 하나를 모델링하기 위해이 같은 일을해야 제안

XML 유효성 검사 오류 : 네임 스페이스 'urn : nhibernate-mapping-2.2'의 'list'요소에 네임 스페이스 'urn : nhibernate-mapping-2.2'에서 '일대 다'잘못된 자식 요소가 있습니다. 가능한 요소 목록 : 네임 스페이스 'urn : nhibernate-mapping-2.2'에서 'index, list-index'

alt text

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" 
    assembly="Eg.Core" 
    namespace="Eg.Core"> 
    <subclass name="Movie" extends="Product"> 
    <property name="Director" /> 
    <list name="Actors" cascade="all-delete-orphan"> 
     <key column="MovieId" /> 
     <index column="ActorIndex" /> 
     <one-to-many class="ActorRole"/> <-- Is this wrong? 
    </list> 
    </subclass> 
</hibernate-mapping> 

나는이 책이 잘못 추측하고있어 :

이 책의 예는 테이블 당 서브 클래스 매핑을 사용하는 좀 더 복잡한 점에서 무엇입니까?

+0

오류 메시지에서 '일대 다'가 결코 '목록'의 하위가 될 수 없다고 쉽게 추측 할 수 있습니다. 오류 메시지에서 버그라고 부릅니다. – Mitja

답변

4

아니요, 매핑에 index 요소가 없습니다. NHibernate의리스트는 정렬되지 않은 set use bag 매핑을 원한다면 순서화 된 세트이다.

+0

고마워 .... 오늘 나는 올바른 멍청한 놈을 느낀다. :) – Kev

+0

목록 매핑에는 목록 인덱서 값에 매핑되는 열이 필요합니다. 귀하의 경우 가방이나 세트가 더 적절할 것입니다. 세트는 중복을 허용하지 않으며 가방이 요소의 단순한 콜렉션 인 동안 정렬 될 수 있습니다. –

+0

@Dmitry - 조언 해 주셔서 감사합니다. – Kev

관련 문제