[英]Join multiple tables with NHibernate and 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。 Join Person -> PersonCompany 和 Person -> PersonFavorites 没有问题 - 但下一步是从 PersonCompany -> Company。
映射应类似于以下内容:
实体
class Person
{
ICollection<PersonFavorites> favorites;
ICollection<PersonCompany> companies;
}
class PersonFavorite
{
Person person;
Favorite favorite;
}
class PersonCompany
{
Person person;
Company company;
}
询问
Person personAlias = null;
PersonFavorite personFavoriteAlias = null;
PersonCompany personCompanyAlias = null;
ICollection<PersonCompany> personCompaniesAlias = null;
Company companyAlias = null;
Favorite favoriteAlias = null;
var query = Session.QueryOver<Person>(() => personAlias)
.JoinAlias(() => personAlias.Favorites, () => personFavoriteAlias)
.JoinAlias(() => personAlias.Companies, () => personCompanyAlias)
// OR: .JoinAlias(() => personAlias.Companies, () => personCompaniesAlias)
.JoinAlias(() => personfavoriteAlias.Favourite, () => favoriteAlias)
.JoinAlias(() => personCompanyAlias.Company, () => companyAlias)
.Where(() => personCompanyAlias.Person.Name == ...)
// OR: .Where(() => personCompaniesAlias.Count() == ...)
// ...
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.