我有一个CreateCriteria,它使用不同的别名将连接添加到同一个表中两次:
aCriteria.CreateCriteria("Color", "co").Add(Expression.In("co.ColorId", bikush.Color.Select(x => x.ColorId).ToList()));
aCriteria.CreateCriteria("Color","fco").Add(Expression.In("fco.ColorId",bikush.FCColor.Select(x => x.ColorId).ToList()));
我收到错误“重复关联路径”
这是我想要生成的SQL:
SELECT b.BikushId, c.[Name] AS PlainColor, fc.[Name] AS FancyColor FROM Bikush b INNER JOIN BikushInColor clt ON clt.BikushId = b.BikushId INNER JOIN Color c ON clt.ColorId = c.ColorId INNER JOIN BikushInFCColor bifc ON b.BikushId = bifc.BikushId INNER JOIN Color fc ON bifc.ColorId =fc.ColorId
有没有使用Nhibernate的CriteriaApi?
由于
答案 0 :(得分:0)
如果我理解正确,那么你应该将两个电话合并为一个:
Criteria.CreateCriteria("Color", "co")
.Add(Expression.In("co.ColorId", bikush.Color.Select(x => x.ColorId).ToList()));
.Add(Expression.In("co.ColorId", bikush.FCColor.Select(x => x.ColorId).ToList()));
答案 1 :(得分:0)
别名是属性,而不是表名。尝试:
aCriteria.CreateCriteria("Color", "co").Add(Expression.In("co.ColorId", bikush.Color.Select(x => x.ColorId).ToList()));
aCriteria.CreateCriteria("FancyColor","fco").Add(Expression.In("fco.ColorId",bikush.FCColor.Select(x => x.ColorId).ToList()));