使用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();
非常感谢
您应该能够创建一个if
语句来重构JOIN
,以便两个条件都可以使用它
if (condition1 || condition2)
{
streetsQuery.JoinAlias(t => t.ParentCity, () => parentCityAlias);
}
if (condition1)
{
streetsQuery.Where(() => parentCityAlias.ParentCountry.Id == /* .. */);
}
if (condition2)
{
streetsQuery.Where(() => /* condition 2 */);
}