2011-09-05 17 views
6

से डीबीकॉन्टेक्स्ट एक्सेस करें मैं एक कैशिंग पैटर्न को लागू करने की कोशिश कर रहा हूं जिसे रेडिस का उपयोग करने की आवश्यकता हो सकती है। इस पैटर्न के साथ समस्या यह है कि मुझे Config.ProxyCreationEnabled को अक्षम करने की आवश्यकता है और उसके बाद वेब खेत में किसी भी समस्या से बचने के लिए इसे फिर से सक्षम करें।IQueryable

मैं क्या करना चाहता हूं IQueryable से DbContext तक पहुंच है, इसलिए मैं इसे हर जगह के बजाय एक बार कर सकता हूं। यह करने के लिए सबसे आसान तरीका है मेरे कैशिंग विस्तार में इस्तेमाल किया जा रहा DbContext पारित करने के लिए है, लेकिन मैं इस पोस्ट में आए:

Access DataContext behind IQueryable

वहाँ ऊपर के लिंक करने के लिए एक समान तरीके से DbContext तक पहुँचने का एक रास्ता है ईएफ 4.1 कोड मुट्ठी (डीबीसेट, आदि) का उपयोग कर?

मैं इस अपने आप को खोजने की कोशिश की है लेकिन IQueryable में संदर्भित DbSet से आधार वर्ग प्रतिबिंब का उपयोग खोजने के लिए संघर्ष किया है।

उत्तर

5

समाधान Access DataContext behind IQueryable में उल्लेख किया है एक हैक है और उपयोग नहीं किया जाना चाहिए। यह IQueryable लागू करने वाले वर्ग में एक निजी सदस्य चर के नाम पर निर्भर करता है। इसका मतलब है कि कार्यान्वयन वर्ग ईएफ/.NET फ्रेमवर्क की भावी रिलीज में बदल सकता है और अपना कोड तोड़ सकता है। चूंकि DQueryCxtxt IQueryable इंटरफ़ेस के माध्यम से सुलभ नहीं है, इसलिए आपको IQueryable कार्यान्वयन के बारे में धारणाओं से बचने के लिए इसे अपने कैशिंग एक्सटेंशन में पास करना होगा। ऐसा करने से कार्यान्वयन में इसे दफनाने के बजाय, आपके कैशिंग इंटरफ़ेस में डीबीकॉन्टेक्स्ट पर निर्भरता भी अधिक स्पष्ट रूप से स्थापित होगी।

+0

इसके लिए धन्यवाद। एक समान निष्कर्ष पर आ रहा था, लेकिन सोच रहा था कि कार्यान्वयन को अमूर्त करना अच्छा होगा। – didiHamman

संबंधित मुद्दे