我想將Criteria查詢應用於實體的內存集合 ,而不是數據庫。這可能嗎? 要讓Criteria API像LINQ一樣工作嗎?或者,也可以將 條件查詢轉換爲LINQ查詢。關於內存中實體的NHibernate Criteria查詢
謝謝!
我想將Criteria查詢應用於實體的內存集合 ,而不是數據庫。這可能嗎? 要讓Criteria API像LINQ一樣工作嗎?或者,也可以將 條件查詢轉換爲LINQ查詢。關於內存中實體的NHibernate Criteria查詢
謝謝!
我不相信你可以使用Criteria對內存中的集合進行查詢,並開始考慮它,這似乎沒有多大意義。如果我已經正確理解了所有內容,那麼您已經對數據庫查詢過了。我建議調整您的原始查詢(無論您選擇哪種方法)以包含所有過濾器。或者你可以使用LINQ(如你所建議的)來優化你的結果。
另外,你想從內存中查詢的理由是什麼?
這聽起來像你正在滾動你自己的緩存機制。我強烈建議檢查NHibernate的二級緩存。它可以很好地處理許多複雜的場景,例如使對基礎表的更新的查詢結果無效。
http://ayende.com/Blog/archive/2009/04/24/nhibernate-2nd-level-cache.aspx
謝謝,詹姆斯。我知道二級緩存。我想製作一個更智能的版本,它可以做更多的工作來避免查詢失效。 – Jacko 2010-11-14 02:51:52
你有沒有考慮/調查與二級緩存集成?創建自己的包裝現有ICacheProvider的ICacheProvider是否可以提供足夠的控制權?只是一個想法,而不是實質上重新實現二級緩存的整個功能集...... – 2010-11-15 02:15:58
謝謝,邁克。這裏是場景:我使用Criteria對數據庫運行查詢,並緩存查詢結果(實體ID)。 – Jacko 2010-11-13 04:09:34
現在,我更新了原始查詢結果中的一個實體。而不是逐出緩存的查詢,我想重新在內存中運行查詢,並更新緩存的查詢。 – Jacko 2010-11-13 04:10:56