使用ExecuteUpdate方法.下面的代码将批量提交批量删除.这适用于NHibernate 2.1.0.(不确定以前的版本)
foreach (List<int> batch in GetBatches(records, _batchSize))
{
using (ITransaction transaction = _session.BeginTransaction())
{
_session.CreateQuery(String.Format("DELETE FROM {0} WHERE Id IN (:idsList)", _domainObject.Name))
.SetParameterList("idsList", batch.ToArray())
.ExecuteUpdate();
transaction.Commit();
}
}
Run Code Online (Sandbox Code Playgroud)
从 NHibernate 5 开始,您可以使用以下语法:
session.Query<Cat>()
.Where(c => c.BodyWeight > 20)
.Delete();
Run Code Online (Sandbox Code Playgroud)
从 NHibernate 5.0 开始,Linq 查询可用于插入、更新或删除实体。查询定义要删除、更新或插入的数据,然后 Delete、Update、UpdateBuilder、InsertInto 和 InsertBuilder 可查询扩展方法允许删除它,或指示应以哪种方式更新或插入它。这些查询完全发生在数据库内部,而不会从数据库中提取相应的实体。
来源:http : //nhibernate.info/doc/nhibernate-reference/querylinq.html#querylinq-modifying
| 归档时间: |
|
| 查看次数: |
4787 次 |
| 最近记录: |