2017-11-01 22 views
1

의 열망 부하 여러 컬렉션 ... 유창함 NHibernate에 : 나는 여러 컬렉션 특성을 다음과 같은 개체를 감안할 때 매핑

public class Parent 
{ 
    public virtual int Id { get; set;} 
    public virtual ICollection<FirstChild> FirstChildren { get; set; } 
    public virtual ICollection<SecondChild> SecondChildren { get; set; } 
} 

이 방법이 있나요 내가 할 수있는 동시에 열망로드를 유창하게 NHibernate에를 사용하여 이러한 속성을 모두? 또는 부모에게 연결된 모든 것을 간단하게로드하십시오.

나는 내 매핑으로 다음과 같은 경우 ...

public ParentMapping() 
{ 
    Id(p => p.Id).GeneratedBy.Identity(); 

    HasMany(p => p.FirstChildren) 
     .Table("FirstChildren") 
     .KeyColumn("Id") 
     .Inverse() 
     .Cascade.AllDeleteOrphan() 
     .Fetch.Join(); 

    HasMany(p => p.SecondChildren) 
     .Table("SecondChildren") 
     .KeyColumn("Id") 
     .Inverse() 
     .Cascade.AllDeleteOrphan() 
     .Fetch.Join(); 
} 

오류의 결과 위의 매핑 : 매핑에 Fetch.Join()를 사용

'Cannot simultaneously fetch multiple bags'.

가 나는 경우 작동 속성 중 하나에서만 사용하십시오.

나는 ToFuture() 쿼리를 사용하여 모든 것을 열렬하게로드 할 수 있지만 매핑에서이 작업을 선호합니다.

답변

0

해당 기능을 사용하려면 ICollection 대신 ISet을 사용해야합니다.

herehere을 살펴볼 수 있습니다.

+1

ISet을 사용하지 않고이를 수행하는 방법이 있습니까? 마치 Fetch.Join() 컬렉션 속성 중 하나를 사용하여 잘 작동합니다. 문제가 발생하는 여러 속성에서이를 사용하는 것입니다. – TomJerrum