जैसा कि टिप्पणी में पहले से ही लादिस्लाव ने संकेत दिया है, आपको प्रदर्शन में सुधार करने के लिए स्वचालित परिवर्तन का पता लगाने को अक्षम करना होगा:
context.Configuration.AutoDetectChangesEnabled = false;
यह परिवर्तन पहचान DbContextएपीआई में डिफ़ॉल्ट रूप से सक्षम है ।
एपीआई DbContextसे अलग व्यवहार करने का कारण यह ObjectContextहै कि स्वचालित परिवर्तन का पता लगने पर एपीआई के कार्यों की तुलना में DbContextएपीआई के कई और कार्य DetectChangesआंतरिक रूप से कॉल करेंगे ObjectContext।
यहां आप उन फ़ंक्शन की सूची पा सकते हैं, जो DetectChangesडिफ़ॉल्ट रूप से कॉल करते हैं । वो हैं:
Add, Attach, Find, Local, या Removeपर सदस्योंDbSet
GetValidationErrors, Entry, या SaveChangesपर सदस्योंDbContext
Entriesपर विधिDbChangeTracker
विशेष रूप से Addकॉल DetectChangesजो आपके खराब प्रदर्शन के लिए जिम्मेदार है।
मैं इसके विपरीत ObjectContextएपीआई DetectChangesकेवल स्वचालित रूप से कॉल करता हूं , SaveChangesलेकिन अंदर नहीं है AddObjectऔर उपरोक्त वर्णित अन्य संगत तरीके। यही कारण है कि डिफ़ॉल्ट प्रदर्शन ObjectContextतेज है।
उन्होंने DbContextइतने सारे कार्यों में इस डिफ़ॉल्ट स्वत: परिवर्तन का परिचय क्यों दिया ? मुझे यकीन नहीं है, लेकिन ऐसा लगता है कि इसे अक्षम करना और DetectChangesउचित बिंदुओं पर मैन्युअल रूप से कॉल करना उन्नत माना जाता है और आसानी से आपके आवेदन में सूक्ष्म कीड़े को पेश कर सकता है इसलिए देखभाल के साथ [इसे] का उपयोग करें ।