2010-03-31 4 views
1

내가 NHibernate에 유창한 NHibernate에 상당히 새로운 해요, 쿼리에 모음을 연결에 문제가 있습니다. 데이터베이스에는 4 개의 관련 AFE가 있습니다. 내가 가지고있는 문제는 AFE 모음이 올바르게 채워지지 않는다는 것입니다. 내가 무엇을해도 컬렉션에 4 개의 AFE가 있지만 모두 같은 대상입니다. 제가 잘못하고있는 것이 명백한 것이 있습니까?유창함 NHibernate에 매핑 문제

감사합니다.

PS입니다. DB를 변경할 수 없으므로 타격중인 데이터베이스에 대한 액세스 권한이 변경되지 않아 진정한 FK가됩니다.

부모

public WellHeaderMap() 
    { 
     Table("Well"); 
     Id(x => x.PropertyNumber, "WELL_NUMBER"); 
     Map(x => x.PropertyID, "PROPERTY_ID"); 
     Map(x => x.Name, "WELL_NAME"); 

     //AFEs is a IList<AFE> 
     HasMany(x => x.AFEs).Inverse().KeyColumn("Property_ID").PropertyRef("PropertyID").Fetch.Join(); 
    } 

컬렉션

public AFEMap() 
    { 
     Table("AFE"); 
     Id(x => x.PropertyID, "PROPERTY_ID"); 
     Map(x => x.AFETypeID, "AFE_TYPE_CODE"); 
     Map(x => x.AFENumber, "AFE_NUMBER"); 
     Map(x => x.IsDeleted, "DELETED_IND"); 
    } 

쿼리

 var wellSearchCriteria = _session.CreateCriteria<WellHeader>() 
      .CreateAlias("AFEs", "afe") 
      .Add(Restrictions.Eq("PropertyNumber", id.ToString())) 
      //.Add(Expression.Eq("afe.AFETypeID", "01")) 
      //.Add(Expression.Eq("afe.IsDeleted", "N")); 
+0

wellHeader.AFE가 동일한 4 개의 엔터티를 반환합니까? – mxmissile

+0

테이블 구조, 클래스 구조 및 매핑을 보지 않아도되는지 확인하기가 어렵습니다. 'HasMany'가'many-to-one'으로 반전되기를 원합니까? 이 관계를 지원하기 위해 부모에게 참조하는 속성이 표시되지 않습니다. –

+0

예, wellHeader.AFEs 항상 같은 4. 내가 쿼리의 AFE의 주석을 해제 추가하더라도, 난 단지 1 AFE를 반환해야 반환하지만 여전히 난 그냥 때문에 샘플 I의 존재에 역을 던졌다 생각 4.를 반환 녹이다. 역변환을 그대로두면 같은 결과가 나타납니다. – SnyderJK

답변

0

나는 현재 당신이, 당신이 당신의 WellHeader 이드 잘못이 있다고 생각 :

Id(x => x.PropertyNumber, "WELL_NUMBER"); 
Map(x => x.PropertyID, "PROPERTY_ID"); 
,515,

아마 같아야

Id(x => x.PropertyID, "PROPERTY_ID"); 
Map(x => x.PropertyNumber, "WELL_NUMBER"); 

PropertyNumber 및 부동산 ID를 전환 하였다. 그러나 스키마를 보지 않아도 알기가 어렵습니다.

+0

기술적으로 테이블 자체의 기본 키가 아니기 때문에 Id는 내 자신의 테이블에 매핑하는 데 도움이되도록 임의로 설정했습니다. – SnyderJK

+0

PropertyID가 PK가 아닌 경우 동일한 PROPERTY_ID를 사용하여 Wells를 여러 개 가질 수 있습니까? – mxmissile

+0

PROPERTY_ID에 고유 한 제한 조건이 있으며, 단지 쿼리를 수행 했으므로 속성 ID가 반복되지 않았습니다. – SnyderJK