2011-04-28 4 views
0

다른 객체의 IList를 포함하는 객체가 있다고합시다. 같은 IList를 가진 객체를 효율적으로 찾을 수 있습니까? HQL이나 ICriteria를 어떻게 사용 하시겠습니까? 나는 SQL을 사용하는 쉬운 방법을 볼 수 없다.nhibernate - 같은 목록을 가진 객체를 찾습니다.

감사합니다.

기독교

PS :

그냥 명확히하기.

public virtual string Text { get; set; } 

클래스 B가 포함되어 있습니다 : 나는이 포함 된 클래스 A가

public virtual IList<A> As { get; set; } 

I에 포함 된 모든 개체를 찾을 싶습니다

A, A1, 즐

의를 이 순서. 쉼표는 목록의 특정 텍스트 요소를 나타냅니다.

PPS :

예에 의해 ICriteria의 발견을 사용하여 작동하지 않는 것 : 여기

NHibernateSession.Current.CreateCriteria(typeof(B)).Add(Example.Create(b)).List(); 

B 목록이

답변

0

내가 사용하는 것이 특정 인스턴스를 포함 B의 인스턴스이다 Linq to NHibernate. 나는 그것에 성공했다.

거기에서 참여할 수 있습니다. 필요한 경우 여러 속성에 가입 할 수 있습니다. 방금 작성했기 때문에 이것은 완벽한 예가 아니지만 아이디어를 제공해야합니다.

var query = 
    from c in customers 
    join e in employees 
     on new { c.Id, c.Address1 } equals new { e.Id, e.Address1 } 
    select new 
    { 
     c.Id, 
     c.Name, 
     c.Address1, 
     e.StartDate 
    }; 

당신은 NHibernate에 대한 자세한 도움말

을 테스트 LinqPad을 (를 구글)를 사용할 수 있습니다, 나는 Ayende's site에 많은 좋은 일들을 읽었습니다.

+0

감사를 할 수있는이

에 가입 할 필요가있다. 제 질문은 충분히 명확하지 않다고 생각합니다. 추신 : – cs0815

0

여러 가지가 필요하다고 생각합니다. 주문을 테스트 할 수있는 색인을 가질 수 있도록 As를 list으로 매핑했는지 확인해야합니다. 당신은 그래서 당신은

NHibernateSession.Current.CreateCriteria<B>() 
    .CreateAlias("As", "a") 
    .Add(Example.Create(b)) 
+0

감사합니다. 나는 이것을 시도했으나 효과가 없었다. 현재 Fluent NHibernate와이 매핑을 사용하고 있습니다 : mapping.HasManyToMany (x => x.As) .Table ("BA"); – cs0815

+0

이것은 이제 작동합니다 : mapping.HasManyToMany (x => x.As) .Table ("BAs"). AsList (index => index.Column ("SortOrder")); – cs0815

+0

생성되는 SQL은 무엇입니까? 아니면 오류가 있습니까? '그것이 효과가 없다'는 것은 무엇을 의미합니까? – Vadim

관련 문제