2010-10-20 1 views

ответ

1

Насколько я знаю.

Для любых отношений, которые не являются индивидуальными, NHibernate делает предположение, что отношение может иметь от 0 до многих результатов, поэтому использует Left Join.

Я не знаю о Linq2NHibernate, но в NH3 с использованием QueryOver API вы можете указать типы соединений.

Например, укажите продукт с категорией. Если Вы писали:

var result = Session.QueryOver<Product>() 
        .Fetch(x => x.Category).Eager 
        .List(); 

Это приведет к левой присоединиться, если вы хотите, чтобы указать внутреннее соединение можно было бы написать тот же запрос, как:

var result = Session.QueryOver<Product>() 
        .JoinQueryOver(x => x.Category, JoinType.InnerJoin) 
        .List(); 

Это приведет внутреннее соединение.

Насколько я знаю, вы не можете указывать типы соединений при использовании поставщика LINQ (Query<T> в NH3)