一尘不染

如何使用Nhibernate删除多个数据库实体?

hibernate

解决此问题的最佳做法是什么?有内置的批处理功能吗?

样例代码:

using (ITransaction transaction = _session.BeginTransaction())
{
   _session.Delete("FROM myObject o WHERE  o.Id = IN(1,2,...99999)");
   transaction.Commit();
}

提前致谢。


阅读 312

收藏
2020-06-20

共1个答案

一尘不染

HQL支持IN子句,如果使用setParameterList,甚至可以传递一个集合。

var idList = new List<int>() { 5,3,6,7 };

_session.CreateQuery("DELETE MyDataClass o WHERE o.Id IN (:idList)")
    .SetParameterList("idList", idList)
    .ExecuteUpdate();

请注意,就像ddango在评论中提到的那样,将不会执行在对象中指定的关系级联,因为运行HQL查询只是转换为DB查询,并且实际上不会加载任何实体对象。

2020-06-20