Nan*_*tte 3 nhibernate asp.net-mvc stored-procedures hql
在我的应用程序中,我想从存储过程中获取数据,其中表未在应用程序中映射.在这个存储过程中,我在列名中添加了别名,这些列响应了我的类中的属性.
HQL:
return Session.CreateSQLQuery("exec PER_PrikklokSaldi :IDPers :jaar :maand")
.AddScalar("Description", NHibernateUtil.String)
.AddScalar("StartSaldo", NHibernateUtil.Int32)
.AddScalar("Plus", NHibernateUtil.Int32)
.AddScalar("Minus", NHibernateUtil.Int32)
.AddScalar("EndSaldo", NHibernateUtil.Int32)
.SetParameter("IDPers", _employeeId)
.SetParameter("jaar", _year)
.SetParameter("maand", _month)
.SetResultTransformer(new AliasToBeanResultTransformer(typeof(ClockInfoSaldi)))
.List<ClockInfoSaldi>()
.ToList();
Run Code Online (Sandbox Code Playgroud)
类:
public class ClockInfoSaldi
{
public string Description { get; set; }
public int StartSaldo { get; set; }
public int Plus { get; set; }
public int Minus { get; set; }
public int EndSaldo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
MS SQL Management Studio中的存储过程结果:

我可以运行这个:
var test = Session.CreateSQLQuery("exec PER_PrikklokSaldi :IDPers :jaar :maand")
.SetParameter("IDPers", _employeeId)
.SetParameter("jaar", _year)
.SetParameter("maand", _month)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行第一个提到的HQL代码时,我收到此错误:{"无法执行查询\ r \n [exec PER_PrikklokSaldi @ p0 @ p1 @ p2]\r \n名称:IDPers - 值:827名称:jaar - 值:2014年名称:maand - 值:1\r \n [SQL:exec PER_PrikklokSaldi @ p0 @ p1 @ p2]"}
InnerException:{"@ p1'附近的语法不正确."}
答案隐藏在异常中(主要在这部分中:"@ p1'附近的语法不正确."):
{"无法执行查询\ r \n [exec PER_PrikklokSaldi @ p0 @ p1 @ p2]\r \n名称:IDPers - 值:827名称:jaar - 值:2014名称:maand - 值:1\r \n [ SQL:exec PER_PrikklokSaldi @ p0 @ p1 @ p2]"}
参数应该用逗号分隔:
var test = Session.CreateSQLQuery("exec PER_PrikklokSaldi :IDPers, :jaar, :maand")
.SetParameter("IDPers", _employeeId)
.SetParameter("jaar", _year)
.SetParameter("maand", _month)
Run Code Online (Sandbox Code Playgroud)
或者更确切地说(对于sql server)
"exec PER_PrikklokSaldi @IDPers=:IDPers, @jaar=:jaar, @maand=:maand"
Run Code Online (Sandbox Code Playgroud)
要改为执行此操作
执行PER_PrikklokSaldi @ p0,@ p1,@ p2
| 归档时间: |
|
| 查看次数: |
5389 次 |
| 最近记录: |