2010-05-01 81 views
3

我想我知道這個問題的答案可能會是什麼,但我想我會繼續問它。使用Criteria API刪除NHibernate集合使用Criteria API

看來,內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); 

並刪除整個集合只需一個電話?

回答

5

不與標準,但它很容易與HQL做到:

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

但你並不需要加載它們。您也可以一次完成:

session.CreateQuery("delete Customer where Name = 'Steve'") 
     .ExecuteUpdate();