은의이 도메인 객체 예를 들어 보자 :개체 A는 LINQ, 어떻게 A B 적어도 하나 갖는 목록을 검색하는 데 사용 NHibernate에에서 객체 B의 소장품이있다
public class A
{
public Guid Id { get; set; }
public ICollection<B> CollectionOfB { get; set; }
}
public class B
{
public Guid Id { get; set; }
public string Name { get; set; }
}
내가 하나를 검색해야 A
개체는 B
이고이 이름은 name1
, name2
, NHibernate 3.x을 사용합니다.
예를 들어, B
사람이 문자열 배열 string[] names = new string[] { "name1", "name2" }
으로 검색하려는 것을 얻는다고 상상해보십시오.
내가 약 .Query<A>().Where(someA => some.CollectionOfB.Any(someB => names.Contains(someB.Name)))
, 그리고
나는이 NHibernate LINQ 공급자에 의해 SQL 쿼리로 컴파일 될 것이라고 생각.
아마도 이것이 최적이 아닌 SQL 쿼리로 컴파일 될 수 있습니다.
NHibernate 3.x LINQ 공급자을 사용하여 이 쿼리를 작성하는 최적의 방법은 무엇입니까?
왜 * 의심스러운가요? 너 해봤 어? 그것은 작동해야합니다. –
@DanielHilgarth 정말요? 그건 그렇고,이 "CollectionOfB"메모리의 각 "CollectionOfB"로드 할 수 있는지 잘 모르겠습니다, 그 이유는 내가이 질문 : D –
항상 생성 된 SQL 확인할 수 ... 그것은 ' 전체 쿼리가 하나의 SQL 문으로 변환되기 때문에 전체 컬렉션을 쿼리의 메모리에로드하지 마십시오. –