如何在nHibernate中运行更新HQL查询?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在nHibernate中运行更新HQL查询?相关的知识,希望对你有一定的参考价值。
我在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");
答案
在NHibernate中,我们做的有点不同:从数据库中获取结构,更改值然后提交更改。我不认为有可能更直接地做到这一点......
//Pseudocode
T t = session.Get<T>(id);
t.NFS = 10;
session.SaveOrUpdate(t);
session.Transaction.Commit();
另一答案
由于没有更多的答案解决实际问题,这里应该如何做,假设您的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。
以上是关于如何在nHibernate中运行更新HQL查询?的主要内容,如果未能解决你的问题,请参考以下文章