Объедините несколько таблиц с помощью 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)
Другие вопросы по тегам