这可能相当简单,但我似乎无法在任何文档中找到合理的解释。
我正在尝试使用 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格式的参数,而不是像在标准 SQL 查询中那样使用@param1 。如果我在查询中使用后一种语法,它会在 qry.SetParameter() 处引发错误。
ISQLQuery/NHibernate 是否有理由要求它们采用这种格式并且不能使用正常语法?