使用Joinlias和相同的别名创建nhibernate条件查询

本文关键字:创建 nhibernate 条件 查询 别名 Joinlias 使用 | 更新日期: 2023-09-27 18:27:53

我正试图在NHibernate中创建一个条件查询,但有一个别名在多个条件中重新调整。我正在获取并排除重复别名

解决这个问题的方法是什么?

我的代码是:

City parentCityAlias = null;
Country parentCountryAlias = null;
var streetsQuery = _session.QueryOver<Street>();
if (request.cityId.HasValue)
{
    streetsQuery = streetsQuery.Where(t => t.ParentCity.Id == request.cityId);
}
if (request.countryId.HasValue)
{
    streetsQuery = streetsQuery.JoinAlias(t => t.ParentCity, () => parentCityAlias)
               .Where(() => parentCityAlias.ParentCountry.Id == request.countryId.Value);
}

IEnumerable<Street> streets = streetsQuery.List();

非常感谢

使用Joinlias和相同的别名创建nhibernate条件查询

您应该能够创建一个if语句来重构JOIN,以便两个条件都可以使用它

if (condition1 || condition2)
{
    streetsQuery.JoinAlias(t => t.ParentCity, () => parentCityAlias);
}
if (condition1)
{
    streetsQuery.Where(() => parentCityAlias.ParentCountry.Id == /* .. */);
}
if (condition2)
{
    streetsQuery.Where(() => /* condition 2 */);
}