я использую последний nhibernate 3, мой запрос:
iqt = rps.Terminals.GetQuery().Where(x => x.NetProtocol.Id == 4);
var res = iqt.OrderBy(x => x.Attributes[124]).ToList();
//ITerminal have IDictionary<long,string>
Когда я смотрю в файл журнала, я вижу сгенерированный sql:
SELECT terminal0_.ID AS ID4_ ,
terminal0_.ALIAS AS ALIAS4_ ,
terminal0_.TTYPE_ID AS TTYPE3_4_ ,
terminal0_.IP_ADDRESS AS IP4_4_ ,
terminal0_.STREET AS STREET4_ ,
terminal0_.LOCATION AS LOCATION4_ ,
terminal0_.MODEL_ID AS MODEL7_4_ ,
terminal0_.NODE_ID AS NODE8_4_ ,
terminal0_.NETPROTOCOL_ID AS NETPROTO9_4_,
(SELECT (xml_desc(terminal0_.street,'UA'))
FROM terminals
WHERE terminals.id =terminal0_.Id
) AS formula1_,
(SELECT (xml_desc(terminal0_.location,'UA'))
FROM terminals
WHERE terminals.id =terminal0_.Id
) AS formula2_,
(SELECT (xml_desc(terminal_models.description,'EN'))
FROM terminal_models
WHERE terminal_models.id = terminal0_.MODEL_ID
) AS formula3_
FROM TERMINALS terminal0_,
TERM_ATTRIBUTES attributes1_
WHERE terminal0_.ID =attributes1_.TERM_ID
AND attributes1_.ATTR_ID = :p0
AND terminal0_.NETPROTOCOL_ID=:p1 //-> bug here it bind p1 with 124 value but correct p0
ORDER BY attributes1_.VALUE ASC;
:p0 = 4 [Type: Int64 (0)],
:p1 = 124 [Type: Int64 (0)]
Я думаю, что nhibernate не может правильно решитьпараметры связывают порядок с подвыборками.Есть ли гуру или разработчик nhibernate, чтобы подтвердить это и сказать, как это исправить?
Tnaks много