Это, вероятно, довольно просто, но я не могу найти разумного объяснения в какой-либо документации.
Я пытаюсь использовать NHibernate.ISQLQuery и использовать SetResultTransformer (), чтобы вернуть пользовательский набор результатов из пользовательского запроса SQL. Вот так:
public virtual IList<T> GetSQLObject<T>(string sql, IDbParameter[] parameters = null)
{
ISQLQuery qry = _sess.CreateSQLQuery(sql);
qry.SetResultTransformer(Transformers.AliasToBean(typeof(T)));
if (parameters != null) {
foreach (IDbParameter parameter in parameters) {
qry.SetParameter(parameter.Name, parameter.Value);
}
}
return qry.List<T>();
}
Из приведенных примеров видно, что в запросе sql мне нужно использовать параметры в формате : param1 вместо @ param1 , как в обычном запросе SQL , Если я использую последний синтаксис в запросе, он выдает ошибку в qry.SetParameter ().
Есть ли причина, по которой ISQLQuery / NHibernate требует их в этом формате и не будет работать с обычным синтаксисом?