Действительно быстрый вопрос ..Linq2NHibernate - только левые соединения?
Ли Linq2NHibernate всегда создает левое соединение для извлечения отношений? Есть ли способ, которым я могу получить внутренний?
Заранее спасибо.
Филип
Действительно быстрый вопрос ..Linq2NHibernate - только левые соединения?
Ли Linq2NHibernate всегда создает левое соединение для извлечения отношений? Есть ли способ, которым я могу получить внутренний?
Заранее спасибо.
Филип
Насколько я знаю.
Для любых отношений, которые не являются индивидуальными, 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)