我在IQuery接口或ISession中找不到任何query.executeUpdate()方法,我可以在其中传递hql来更新记录。
这是hql:
string hql = "update QAD qa set qa.NFS=:NFS where qa.ID = 1145";
IQuery q = session.CreateQuery(hql).SetString("NFS", "10");
答案 0 :(得分:0)
在NHibernate中,我们做的有点不同: 从数据库中获取结构,更改值,然后提交更改。 我认为不可能更直接地做到这一点......
//Pseudocode
T t = session.Get<T>(id);
t.NFS = 10;
session.SaveOrUpdate(t);
session.Transaction.Commit();
答案 1 :(得分:0)
由于没有更多的答案解决实际问题,所以应该如何做,假设你的NHibernate版本不太老不支持:
string hql = "update QAD qa set qa.NFS=:NFS where qa.ID = 1145";
IQuery q = session.CreateQuery(hql).SetString("NFS", "10");
q.ExecuteUpdate();
就个人而言,我宁愿将id设置为参数。如果您愿意,可以查看ExecuteUpdate
返回值。它将告知有多少实体已更新。
有关HQL DML语句的参考文档是here。