使用Criteria API删除NHibernate的集合

lom*_*axx 4 nhibernate

我想我知道这个问题的答案可能会是什么,但我想我还是会继续问这个问题.

似乎在NHibernate中,如果我做这样的事情:

IList<Customer> customers = Session.CreateCriteria(typeof(Customer))
                                .Add(Restrictions.Eq("Name", "Steve")
                                .List<Customer>();
Run Code Online (Sandbox Code Playgroud)

然后我想删除该客户列表.据我所知,唯一的方法就是这样:

foreach(var customer in customers)
{
    Session.Delete(customer);
}
Run Code Online (Sandbox Code Playgroud)

但我想知道的是,如果有任何办法,我可以去:

Session.Delete(customers);
Run Code Online (Sandbox Code Playgroud)

并通过一次调用删除整个集合?

Die*_*hon 5

不是Criteria,但使用HQL很容易:

session.CreateQuery("delete Customer customer where customer in (:customers)")
       .SetParameterList("customers", customers.ToArray())
       .ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)

但是你不需要加载它们.您也可以一次性完成:

session.CreateQuery("delete Customer where Name = 'Steve'")
       .ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)