我怎樣才能做這樣的事情如何通過id列表刪除一組實體?
Session
.CreateQuery("delete from People where People.Id in (:idList)")
.SetParameter("idList", idList)
.ExecuteUpdate()
但沒有HQL?
我怎樣才能做這樣的事情如何通過id列表刪除一組實體?
Session
.CreateQuery("delete from People where People.Id in (:idList)")
.SetParameter("idList", idList)
.ExecuteUpdate()
但沒有HQL?
據我所知,沒有Fluent Nhibernate語法用於刪除實體。我還想在刪除時使用HQL(甚至是SQL)。
有一個例子here可能會做你所需要的。它是使用Session.delete
的重載你可以這樣做的一個:
foreach(var item in idList)
{
Session.Delete(Session.Load<People>(item));
}
,並提高這組批量大小的性能到20這樣的配置:
<property name="adonet.batch_size">20</property>
這Nhibernate中默認存在的行爲3.2
如果我沒有弄錯這種方法生成每個項目的查詢,但在單批次?但如何用單個查詢來做到這一點? – k0lpak 2012-01-09 20:30:58
而你應該使用Session.Load而不是Session.Get。那麼在刪除每個項目之前,您將不會有很多選擇 – Sly 2012-01-10 07:31:08
@ k0lpak:我認爲您無法在單個查詢中繼續。 – 2012-01-10 11:32:32