2010-11-13 24 views

回答

1

我不相信你可以使用Criteria對內存中的集合進行查詢,並開始考慮它,這似乎沒有多大意義。如果我已經正確理解了所有內容,那麼您已經對數據庫查詢過了。我建議調整您的原始查詢(無論您選擇哪種方法)以包含所有過濾器。或者你可以使用LINQ(如你所建議的)來優化你的結果。

另外,你想從內存中查詢的理由是什麼?

+0

謝謝,邁克。這裏是場景:我使用Criteria對數據庫運行查詢,並緩存查詢結果(實體ID)。 – Jacko 2010-11-13 04:09:34

+0

現在,我更新了原始查詢結果中的一個實體。而不是逐出緩存的查詢,我想重新在內存中運行查詢,並更新緩存的查詢。 – Jacko 2010-11-13 04:10:56

1

這聽起來像你正在滾動你自己的緩存機制。我強烈建議檢查NHibernate的二級緩存。它可以很好地處理許多複雜的場景,例如使對基礎表的更新的查詢結果無效。

http://ayende.com/Blog/archive/2009/04/24/nhibernate-2nd-level-cache.aspx

+0

謝謝,詹姆斯。我知道二級緩存。我想製作一個更智能的版本,它可以做更多的工作來避免查詢失效。 – Jacko 2010-11-14 02:51:52

+0

你有沒有考慮/調查與二級緩存集成?創建自己的包裝現有ICacheProvider的ICacheProvider是否可以提供足夠的控制權?只是一個想法,而不是實質上重新實現二級緩存的整個功能集...... – 2010-11-15 02:15:58

相關問題