2016-06-06 9 views
7

इस blog post में दिखाए गए अनुसार इकाई फ्रेमवर्क 6 में एक इंटरसेप्टर को कॉन्फ़िगर करने का एक तरीका है जो स्टैक बैकट्रैक समेत सभी धीमी क्वेरी लॉग कर सकता है।क्या मैं अभी तक एंटीसेफ्रेमवर्क कोर 1.0 आरसी 2 में एक इंटरसेप्टर कॉन्फ़िगर कर सकता हूं?

ईएफ 7 कहलाए जाने वाले पहले बीटा के बारे में 2015 से एक प्रश्न, सुझाव देता है कि यह possible yet एएसपीनेट vnext प्रारंभिक बीटा में नहीं था।

फिर भी, एफई कोर के पूरे डिजाइन composable होने के लिए है, और GitHub बग ट्रैकर here पर विचार विमर्श में एक तकनीक है जहाँ आप वहाँ में कुछ विधि SqlServerConnection जैसे कुछ निम्न स्तर वर्ग उपवर्ग और फिर ओवरराइड, प्राप्त करने के लिए संभव हो सकता है कि कुछ बिंदु जिन्हें आप क्वेरी के पहले और बाद में हुक कर सकते हैं, और यदि मिलीसेकंद टाइमर मान निष्पादित किया गया तो कुछ निम्न स्तर लॉगिंग जोड़ें।

क्या यह अभी भी आवश्यक है और ईएफ कोर 1.0.0-आरसी 2-फाइनल (जून 2016 तक चालू) में एकमात्र तकनीक है?

उत्तर

6

ईएफ कोर में "इंटरसेप्टर" या समान जीवन चक्र हुक नहीं हैं। यह सुविधा यहां ट्रैक की गई है: https://github.com/aspnet/EntityFramework/issues/626

यदि आप चाहते हैं कि सभी स्तर लॉग आउटपुट अनावश्यक हो तो अनावश्यक हो सकता है। कई निम्न-स्तरीय ईएफ कोर घटक पहले ही लॉगिंग का उत्पादन करते हैं, क्वेरी निष्पादन सहित लॉगिंग करते हैं। आप DbContextOptionsBuilder.UseLoggerFactory(ILoggerFactory factory) पर कॉल करके कस्टम लॉगर फैक्ट्री का उपयोग करने के लिए ईएफ कॉन्फ़िगर कर सकते हैं। (इस लॉगर इंटरफ़ेस पर अधिक जानकारी के लिए https://docs.asp.net/en/latest/fundamentals/logging.html और https://github.com/aspnet/Logging देखें।) ईएफ कोर अच्छी तरह से परिभाषित ईवेंट आईडी के साथ कुछ उल्लेखनीय लॉग इवेंट तैयार करता है। (1.0.0-आरसी 2 में Microsoft.EntityFrameworkCore.Infrastructure.CoreLoggingEventId देखें, जिसका नाम बदलकर 1.012 आरटीएम के लिए Microsoft.EntityFrameworkCore.Infrastructure.CoreEventId कर दिया गया था।) ऐसा करने के उदाहरणों के लिए https://docs.efproject.net/en/latest/miscellaneous/logging.html देखें।

यदि आपको पहले से उत्पादित ईएफ कोर घटकों के अतिरिक्त अतिरिक्त लॉगिंग की आवश्यकता है, तो आपको ईएफ कोर के निचले स्तर के घटकों को ओवरराइड करने की आवश्यकता होगी। यह मौजूदा घटक को ओवरराइड करके सबसे अच्छा किया जाता है और इस ओवरराइडिंग संस्करण को निर्भरता इंजेक्शन के माध्यम से ईएफ में जोड़ा जाता है। ऐसा करने के लिए आंतरिक रूप से उपयोग करने के लिए ईएफ के लिए कस्टम सेवा प्रदाता को कॉन्फ़िगर करना आवश्यक है। यह E12 आंतरिक रूप से सेवाओं का उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए DbContextOptionsBuilder.UseInternalServiceProvider(IServiceProvider services)https://docs.efproject.net/en/latest/miscellaneous/internals/services.html द्वारा कॉन्फ़िगर किया गया है।

+0

सेवा की निर्भरता इंजेक्शन सबसे आशाजनक दृष्टिकोण की तरह लगता है। –

+0

लिंक 404 लौटा रहा है:/ –

+0

इसे मिला: https://docs.efproject.net/en/latest/miscellaneous/internals/services.html –

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