これらのドメインオブジェクトを例として取り上げましょう。
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; }
}
NHibernate 3.xを使用して、これらの名前A
を持つオブジェクトを取得する必要がありますB
name1
name2
。
たとえば、B
名前の配列から文字列として取得したいものを取得するとしますstring[] names = new string[] { "name1", "name2" }
。
私は考えましたが.Query<A>().Where(someA => some.CollectionOfB.Any(someB => names.Contains(someB.Name)))
、これがNHibernateLINQプロバイダーによってSQLクエリとしてコンパイルされるのではないかと思います。多分これはあまり最適ではないSQLクエリにコンパイルされるでしょう。
NHibernate 3.x LINQプロバイダーを使用してこのクエリを構築する最適な方法は何でしょうか?