Вопрос:
Какие критерии / прогнозы могут генерировать следующий запрос?
SELECT SUBSTRING(Name, 0, 1) FROM Person GROUP BY SUBSTRING(Name, 0, 1)
(Очевидно, что это проще с DISTINCT
, но мне понадобится подсчет позже, когда я исправлю это).
<ч />
Мои подходы:
Моя главная проблема здесь с константами, потому что, если я использую
Projections.GroupProperty(Projections.SqlFunction(
"SUBSTRING",
NHibernateUtil.String,
Projections.GroupProperty("Name"),
Projections.Constant(0),
Projections.Constant(1)
))
Я получаю
SELECT SUBSTRING(Name, 0, 1) FROM Person GROUP BY SUBSTRING(Name, , )
, что очевидно из исходного кода NH , но бесполезно.
И если я сделаю
Projections.GroupProperty(Projections.SqlFunction(
"SUBSTRING",
NHibernateUtil.String,
Projections.GroupProperty("Name"),
Projections.GroupProperty(Projections.Constant(0)),
Projections.GroupProperty(Projections.Constant(1))
))
тогда я получу
SELECT SUBSTRING(Name, @p0, @p1) FROM Person GROUP BY SUBSTRING(Name, ?, ?)
, где вопросительные знаки кажутся нерешенными параметрами, но я не знаю, почему.
<ч />
Подробнее:
Я только что нашел
AbstractEntityJoinWalker.InitProjection(
SqlString projectionString,
SqlString whereString,
SqlString orderByString,
string /* WTF? */ groupByString,
SqlString havingString,
LockMode lockMode
)
Тип groupByString
выглядит крайне подозрительно.