Как мы можем получить более одной коллекции внуков
У меня есть эта структура таблицы:
ReferralSource - main table
-Phone - join table Rs as one-to-one
- Carrier - child table for Phone
- Type - child table for Phone
Я хочу получить его по запросу Linq:
Session.Query<ReferralSource>()
.Fetch(x => x.Phone)
.ThenFetch(x => x.Type)
.Fetch(x => x.Phone)
.ThenFetch(x => x.Carrier);
И этот запрос получить этот код SQL:
select referralso0_.Id,
referralso0_.FirstName,
phonetype4_.TypeName
carrier6_.Name
from REFERRALSOURCES referralso0_
left outer join PHONES phone3_
on referralso0_.PhoneId = phone3_.Id
left outer join PHONETYPES phonetype4_
on phone3_.TypeId = phonetype4_.Id
- duplicated join started
left outer join PHONES phone5_
on referralso0_.PhoneId = phone5_.Id
left outer join CARRIERS carrier6_
on phone5_.CarrierId = carrier6_.Id - duplicated join finished
Как я могу удалить дублированное левое соединение, используя fetch?
1 ответ
Может быть, если вы сопоставите телефон как компонент вместо объекта
public ReferralSourceMap()
{
Join("Phones", join =>
{
join.KeyColumn("...");
join.Component(x => x.Phone, c => { ... });
});
}
Изменить: к сожалению, это не будет работать с LINQ2NHibernate только с Criteria и QueryOver. Должен ли я удалить ответ?