2010-03-22 10 views
5

मैं NHibernate का उपयोग कर और एक कैश क्षेत्र मेरी NHibernate विन्यास में निर्दिष्ट है कर रहा हूँ:NHibernate कैश/हटाने की समस्या?

<cache region="HalfHour" expiration="1800" priority="3" /> 

मैं एक इकाई परिभाषा (UserDefinedGroup) जो पढ़ने-लिखने मोड में इस कैश क्षेत्र का उपयोग करने के लिए निर्धारित है:

<class name="UserDefinedGroup" table="Message_Groups"> 
    <cache region="HalfHour" usage="read-write" /> 
    ... 
</class> 

var results = Session.CreateQuery("from UserDefinedGroup order by Name") 
       .SetCacheable(true) 
       .SetCacheRegion("HalfHour") 
       .List<UserDefinedGroup>(); 
:

के रूप में यह UserDefinedGroup उदाहरणों की एक बड़ी संख्या देता है मैं भी एक HQL क्वेरी कि क्वेरी कैश का उपयोग करने के लिए सेट किया गया है

हालांकि, जब मैं UserDefinedGroup का उदाहरण कोशिश करता हूं और हटाता हूं तो मुझे निम्न त्रुटि प्राप्त होती है भले ही इकाई रीड-राइट कैश का उपयोग करने के लिए सेट हो।

ReadOnlyCache: एक केवल पढ़ने के लिए वस्तु Cristal.Model.UserDefinedGroups.UserDefinedGroup

मैं पूरी तरह से बात को अनदेखा कर सकते हैं या यहाँ NHibernate कैशिंग गलतफहमी हूँ पर लिख नहीं कर सकते हैं? मैं उम्मीद करता हूं कि यह डिलीट करने के लिए और कैश उचित रूप से अपना ख्याल रखे, लेकिन स्पष्ट रूप से यह नहीं हो रहा है।

+1

क्या यह कैश क्षेत्र किसी अन्य संस्था द्वारा उपयोग किया जाता है? यदि हां, क्या केवल कैश के उपयोग हैं जो केवल पढ़ने के लिए हैं? एक विशिष्ट क्षेत्र में केवल एक उपयोग प्रकार होना चाहिए। – ddango

+0

धन्यवाद ddango, यह सही समस्या प्रतीत होता है। इसे एक नए कैश क्षेत्र में ले जाने से इसे ठीक किया गया। अगर आप इसे टिप्पणी के बजाय उत्तर के रूप में पोस्ट करते हैं तो मैं समाधान के रूप में आपका उत्तर स्वीकार करूंगा :) –

उत्तर

4

क्या यह कैश क्षेत्र किसी अन्य संस्था द्वारा उपयोग किया जाता है? यदि हां, क्या केवल कैश के उपयोग हैं जो केवल पढ़ने के लिए हैं? एक विशिष्ट क्षेत्र में केवल एक उपयोग प्रकार होना चाहिए।