2010-11-23 6 views
0

에 속성이없는 테이블에 가입 난이 다음 모델 :은 내부 NHibernate에 클래스

내가 능통 자 NHibernate를 사용하여 다음 쿼리를 만들 수있는 방법
public class FlatMap : ClassMap<Flat> 
    { 
     public FlatMap() 
     { 
      Id(m => m.FlatID).GeneratedBy.Identity(); 
      Map(m => m.Name); 
      Map(m => m.Notes); 
      Map(m => m.Released); 
     } 

    } 
public class BuildingMap : ClassMap<Building> 
{ 
    public BuildingMap() 
    { 
     Id(i => i.BuildingID).GeneratedBy.Identity(); 
     Map(m => m.Name); 
     HasMany<Flat>(m => m.Flats).Cascade.All().KeyColumn("BuildingID").Not.LazyLoad(); 
    } 
} 

public class ContractMap : ClassMap<Contract> 
    { 
     public ContractMap() 
     { 
      Id(m => m.ContractID).GeneratedBy.Identity(); 
      Map(m => m.Amount); 
      Map(m => m.BeginIn); 
      Map(m => m.EndIn); 
      References(m => m.RentedFlat); 
     } 
    } 

?

Select * From Contract 
Inner Join Flat On Contract.RentedFlatID = Flat.ID 
Inner Join Building On Building.BuildingID = Flat.BuildingID 
Where Building.BuildingID = @p0 

특히 플랫에서 건물에 대한 참조가 없습니까 ?? 나는 그것을 원하지 않는다!

물론 내가 순서에 대해 이야기하고 참조 내가 문제가 해결이

var criteria = session.CreateCriteria<Contract>().CreateCriteria ("RentedFlat").CreateCriteria ("Building"/*there is no such property in Flat class*/); 

답변

0

처럼 뭔가를 할 수 있지만 내가 생각하는 방식이 좋다. 하지만 누군가가 나에게 더 나은 해결책을 제공 할 때까지 대답으로 만들 것입니다.

criteria.CreateCriteria("RentedFlat") 
      .Add(Restrictions.Eq("BuildingID", selectedBuilding.BuildingID)); 
: 이제 다음 쿼리를 수행 할 수

Map(m => m.BuildingID); 

:

나는 플랫 클래스에 속성 BuildingID을 추가로 매핑 클래스를 수정