Мне нужно выполнить сложное левое соединение для таблицы, и я не уверен, как написать код, используя запрос критерия. В настоящее время у меня есть:
public IList<RezolutionConfig> GetSearchConfigByManagerCategoryProduct(int ManagerId, int ProductTypeId, int ConfigCategoryId)
{
ICriteria criteria = Session.GetISession().CreateCriteria(typeof(RezolutionConfig))
.CreateAlias("RezolutionConfigCategory", "rcc")
.Add(Expression.Eq("rcc.id", ConfigCategoryId))
.CreateAlias("RezolutionProductType","rpt")
.Add(Expression.Eq("rpt.id", ProductTypeId))
.CreateAlias("RezolutionManagerConfigs", "rmc", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.CreateAlias("rmc.Manager", "m", NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.Add(Expression.Eq("m.id", ManagerId));
return criteria.List<RezolutionConfig>();
}
, который производит:
ВЫБРАТЬ *
FROM [dbo]. [RezolutionConfig] this_
внутреннее соединение [dbo]. [RezolutionConfigCategory] rcc1_ для этого _. [RezolutionConfigCategoryId] = rcc1 _. [RezolutionConfigCategoryId]
внутреннее соединение [dbo]. [RezolutionProductType] rpt2_ для этого _. [RezolutionProductTypeId] = rpt2 _. [RezolutionProductTypeId]
левое внешнее соединение [dbo]. [RezolutionManagerConfig] rmc3_ для этого _. [RezolutionConfigID] = rmc3 _. [RezolutionConfigID]
левое внешнее соединение [dbo]. [Manager] m4_ на rmc3 _. [ManagerID] = m4 _. [ManagerID] ГДЕ rcc1 _. [RezolutionConfigCategoryId] = 1
и rpt2 _. [RezolutionProductTypeId] = 1
и m4 _. [ManagerID] = 9135
Что мне нужно сделать, это
ВЫБРАТЬ *
FROM [dbo]. [RezolutionConfig] this_
внутреннее соединение [dbo]. [RezolutionConfigCategory] rcc1_ для этого _. [RezolutionConfigCategoryId] = rcc1 _. [RezolutionConfigCategoryId]
внутреннее соединение [dbo]. [RezolutionProductType] rpt2_ для этого _. [RezolutionProductTypeId] = rpt2 _. [RezolutionProductTypeId]
левое внешнее соединение [dbo]. [RezolutionManagerConfig] rmc3_ для этого _. [RezolutionConfigID] = rmc3 _. [RezolutionConfigID]
левое внешнее соединение [dbo]. [Manager] m4_ на rmc3 _. [ManagerID] = m4 _. [ManagerID] и m4 _. [ManagerID] = 9135
ГДЕ rcc1 _. [RezolutionConfigCategoryId] = 1
и rpt2 _. [RezolutionProductTypeId] = 1