Объедините несколько таблиц с помощью NHibernate и QueryOver
У меня есть эти таблицы:
Person -> PersonFavorites, PersonCompany
PersonCompany -> Company
Теперь я должен сделать следующее выбрать с помощью NHibernate и QueryOver:
select * from Person
inner join PersonFavorites on Person.Id = PersonFavorites.PersonId
inner join PersonCompany on Person.Id = PersonCompany.PersonId
inner join Company on Company.Id = PersonCompany.CompanyId
where ...
Может кто-нибудь дать мне образец, как я могу это сделать? - Моя проблема в том, что мне нужно объединить несколько таблиц Person -> PersonCompany -> Company. Присоединиться к Person -> PersonCompany и Person -> PersonFoving не проблема, но следующий шаг от PersonCompany -> Company.
1 ответ
Решение
Отображение должно быть похожим на следующее:
юридические лица
class Person
{
Collection<PersonFavorites> favorites;
Collection<PersonCompany> companies;
}
class PersonFavorite
{
Person person;
Favorite favorite;
}
class PersonCompany
{
Person person;
Company company;
}
запрос
Person personAlias = null;
PersonFavorites personfavouriteAlias = null;
PersonCompany personCompanyAlias = null;
Company companyAlias = null;
Favorite favouriteAlias = null;
var query = Session.QueryOver<Person>(() => personAlias)
.joinAlias(() => personAlias.favorites, () => personfavouriteAlias)
.joinAlias(() => personAlias.companies, () => personCompanyAlias)
.joinAlias(() => personfavouriteAlias.Favourite, () => favouriteAlias)
.joinAlias(() => personCompanyAlias.Company, () => companyAlias)