2008-11-11 25 views
6

मैं सोच रहा हूँ यह, Application_BeginRequest में इकाई वस्तु संदर्भ सेटअप करने के लिए स्मार्ट हो Request.items में संग्रहीत, अनुरोध भर में इसका इस्तेमाल और Application_EndRequest में यह निपटाने हैं साथ ASP.NET MVC। इस तरह संदर्भ हमेशा उपलब्ध है और मैं अपने विचारों में इकाई की रूपरेखा वस्तु ग्राफ, आलसी लोड हो रहा है क्या मैं पहले से ही उत्सुक नहीं लाया गया है नेविगेट कर सकते हैं।इकाई की रूपरेखा

मुझे लगता है कि यह यह Ruby on Rails पर विकसित करने की तरह होगा।

यह हो सकता है मैं ऐसे विधर्म बोलने के लिए गोली मार दी जानी चाहिए, लेकिन यह यह सिर्फ :)

मैं Application_BeginRequest और ..EndRequest हालांकि ASP.NET MVC पर सक्रिय होने नहीं मिल सकता है काम कर सकते हैं तो पागल है। क्या उन्हें निकाल दिया नहीं गया है? मुझे कोई विशेष चाल करने की ज़रूरत है?

उत्तर

5

ASP.NET MVC 1.0 का निर्माण मुझे दोनों beginrequest पर ईवेंट हैंडलर्स ऊपर हुक जाने और EndRequest, एक SessionScope और ऊपर Newing और EndRequest मैं में HttpContext.Items beginrequest में (मैं कैसल ActiveRecord में स्विच) में भंडारण HttpContext से सत्रस्थान चुनें। इसे हटाएं और इसका निपटान करें। यह पूरे अनुरोध जीवन चक्र में आलसी लोडिंग सक्षम बनाता है। (यहां तक ​​कि विचारों में वस्तु ग्राफ नेविगेट कर सकते हैं।)

5

एफई में वस्तु संदर्भ, L2S में डेटा संदर्भ की तरह, एक "काम की इकाई" के रूप में बनाया गया है, वे थ्रेड-सुरक्षित नहीं कर रहे हैं, और वे तैयार किया गया है नहीं कर रहे हैं लंबे समय तक रहते थे किया जाना है।

एमवीसी में, सबसे अच्छी रणनीति नियंत्रक के निर्माता (अंतर्निहित या स्पष्ट रूप से कोई फर्क नहीं पड़ता) में एक बनाना है और फिर इसे निपटान विधि में निपटाना है। बेशक, ईएफ आलसी लोडिंग नहीं करता है, इसलिए आपको आलसी होने का अपना रास्ता खोजना होगा। :)

+3

नहीं, यह एक बुरा दृष्टिकोण। यह नियंत्रक को परीक्षण करने में कठोर बनाता है और इसका मतलब यह भी है कि काम की इकाई नियंत्रक के बाहर उपलब्ध नहीं है। नीचे उल्लिखित सत्र-प्रति-अनुरोध पैटर्न बेहतर है। ईएफ v1 आलसी लोडिंग का समर्थन करता है - यह सिर्फ स्पष्ट होना चाहिए। –

+0

मुझे लगता है कि आप "आलसी लोडिंग" का अर्थ क्या समझते हैं। ईएफ आपको स्वचालित रूप से संबंधों को बेसब्री से लोड करने की अनुमति देता है, लेकिन आलसी लोड नहीं। टेस्टेबिलिटी के लिए, मैं मानता हूं कि किसी ऑब्जेक्ट संदर्भ को सीधे उपभोग करने से टेस्टेबिलिटी होती है, लेकिन इसका उपयोग सीटीओ/उपयोग के निपटारे से नहीं है। –

+0

एलओएल दोस्त। यह सिर्फ "स्पष्ट" हो गया है http://blogs.msdn.com/jkowalski/archive/2008/05/12/transparent-lazy-loading-for-entity-framework-part-1.aspx –

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