これはおそらくかなり簡単ですが、どのドキュメントにも合理的な説明が見つからないようです。
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 クエリでは、標準の SQL クエリの場合と同様に、 @param1の代わりに:param1の形式でパラメーターを使用する必要があるようです。クエリで後者の構文を使用すると、qry.SetParameter() でエラーがスローされます。
ISQLQuery/NHibernate がこの形式でそれらを必要とし、通常の構文では機能しない理由はありますか?