Удаление коллекции с помощью NHibernate с использованием API Criteria - PullRequest
4 голосов
/ 01 мая 2010

Думаю, я знаю, что ответ на этот вопрос, вероятно, будет, но я решил пойти дальше и спросить его.

Похоже, что в NHibernate, если я сделаю что-то вроде этого:

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

И я хочу затем удалить этот список клиентов. Из того, что я могу сказать, единственный способ сделать это так:

foreach(var customer in customers)
{
    Session.Delete(customer);
}

Но мне интересно, есть ли способ, которым я могу просто пойти:

Session.Delete(customers);

И удалить всю коллекцию одним вызовом?

1 Ответ

5 голосов
/ 02 мая 2010

Не с критериями, но с HQL это легко сделать:

session.CreateQuery("delete Customer customer where customer in (:customers)")
       .SetParameterList("customers", customers.ToArray())
       .ExecuteUpdate();

Но вам не нужно загружать их. Вы также можете сделать это одним выстрелом:

session.CreateQuery("delete Customer where Name = 'Steve'")
       .ExecuteUpdate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...