2010-10-07 28 views
1

时得到一个“重复协会路径”的错误我有添加具有不同的别名一个连接到同一个表两次个createCriteria:我在NHibernate的标准访问同一个表两次

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

如果我理解正确的话,那么你应该合并蒂斯两个电话一个:

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())); 
+0

“颜色”和“花式颜色”是两个不同的链接表的独立属性。 – Eitan 2010-10-07 12:59:56

+0

无论如何Nhibernate说你已经在同一个关联路径上创建了两个不同的标准。意味着你不能在同一个属性上使用两个CreateCriteria – Sly 2010-10-07 13:26:15

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())); 
相关问题