好的, 在我的解決方案中,我通過將IsDeleted設置爲true而不是刪除實體來實現softdeletes。nhibernate softdelete覆蓋
我還在類Mapings中添加了Where IsDeleted = false。
現在我所有的select查詢都會被執行,並將結果限制在那些未被刪除的地方。
但現在在具體的查詢中,我需要顯示那些被刪除的工具。 如何在某些查詢中覆蓋此行爲?
請幫忙。 謝謝 Luka
好的, 在我的解決方案中,我通過將IsDeleted設置爲true而不是刪除實體來實現softdeletes。nhibernate softdelete覆蓋
我還在類Mapings中添加了Where IsDeleted = false。
現在我所有的select查詢都會被執行,並將結果限制在那些未被刪除的地方。
但現在在具體的查詢中,我需要顯示那些被刪除的工具。 如何在某些查詢中覆蓋此行爲?
請幫忙。 謝謝 Luka
我會建議您使用過濾器來實現功能。
您可以在所有具有IsDeleted列的實體上啓用此過濾器,然後在想要搜索所有記錄時顯式禁用過濾器。
這是很相似,這裏所描述的那樣:NHibernate: Creating a criteria which applies for all queries on a table
+1過濾器的工作非常適合場景的完全一樣,但要記住他們不多到一,一-to-one關聯工作。
所以對於類Foo
和Bar
其中Bar
是軟刪除和Foo
點Bar
和關聯映射(即Foo.Bar
)如果你取Foo和Bar是軟刪除實體仍將水合的情況下, 。
這是有問題的,當你包含類似
if (Foo.Bar != null) {
//will never execute
}
邏輯您可以通過庫上的一個微不足道的改變而改變這種行爲,我已經寫上 http://savale.blogspot.com/2010/01/enabling-filters-on-mapped-entities.html後,顯示瞭如何做到這一點。它描述了v2.1.2的運行情況,但它與v3.0 + pf相似NHibernate
你能發佈映射的相關部分嗎? –