New*_*bie 12 c# nhibernate hibernate batch-file batch-processing
这个问题的最佳做法是什么?内置任何批处理功能吗?
示例代码:
using (ITransaction transaction = _session.BeginTransaction())
{
_session.Delete("FROM myObject o WHERE o.Id = IN(1,2,...99999)");
transaction.Commit();
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
jos*_*rry 19
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();
Run Code Online (Sandbox Code Playgroud)
我有问题得到工作的答案,我发现以下查询100%工作
Session.CreateQuery("delete Customer c where c.id in (:deleteIds)")
.SetParameterList("deleteIds", deleteIds)
.ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)
Customer是类名而不是表名.id是小写,在HQL中,它是主键而不是类中的属性名称(支持属性名称)
您可以使用HQL删除多个对象
HQL DELETE示例(您可以使用IN和HQL):
ISession session = sessionFactory.OpenSession();
ITransaction tx = session.BeginTransaction();
String hqlDelete = "delete Customer c where c.name = :oldName";
// or String hqlDelete = "delete Customer where name = :oldName";
int deletedEntities = session.CreateQuery( hqlDelete )
.SetString( "oldName", oldName )
.ExecuteUpdate();
tx.Commit();
session.Close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20318 次 |
| 最近记录: |