Unisciti a più tabelle con Nibernate e QUERYOVER
-
11-12-2019 - |
Domanda
Ho queste tabelle:
Person -> PersonFavorites, PersonCompany
PersonCompany -> Company
.
Ho ora di fare i seguenti selezionati con Nibernate e 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 ...
.
Qualcuno può darmi un campione, come posso farlo?- Il mio problema è che devo unirmi a più tavoli da tavolini -> PersonomCompany -> Azienda.The Join Person -> PersonomPany e Person -> Personalfavorites non sono problemi - ma il prossimo passo da Personcompany -> Azienda.
Soluzione
La mappatura dovrebbe essere simile al seguente:
Entità
.
class Person
{
Collection<PersonFavorites> favorites;
Collection<PersonCompany> companies;
}
class PersonFavorite
{
Person person;
Favorite favorite;
}
class PersonCompany
{
Person person;
Company company;
}
Query
.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)