這必須是一個簡單的問題。給定一個標準,如何刪除滿足標準的實體?如何使用條件刪除NHibernate對象?
的基本原理:
HQL和NH標準是NHibernate的特定構建體和因此它們是服務器側DAL實現細節。我不希望他們「泄漏」到客戶端。所以,我們的客戶端提供了LINQ表達式來處理服務器。直到現在,select請求和LINQ to NHibernate處理它們的請求都很好。
但是,現在需要實施批量刪除操作。像往常一樣,客戶端提供一個LINQ表達式,服務器將刪除滿足該表達式的實體。 不幸的是,LINQ to NHibernate在這裏沒有任何幫助。它可以做的最多的是將給定的LINQ表達式轉換爲NHibernate標準。
無論如何,這是故事。我想強調客戶端根本不知道NHibernate,我喜歡它保持這種方式。
P.S.
我使用NH 2.1
雖然在處理大量對象時我不喜歡這種方法,因爲它需要先從數據庫中獲取所有實體,然後才能刪除它們。 – 2009-08-25 09:02:57
這是真的,你不需要使用HQL來發出'DELETE FROM WHERE'SQL語句嗎? – DanB 2009-08-25 09:05:50
夥計們,你不認真。一定會有更好的辦法! – mark 2009-08-25 09:06:26