300k पंक्तियों जैसे डेटा वॉल्यूम के लिए, मैं EF को भूल जाऊंगा। मैं ऐसा एक टेबल के साथ करूंगा जैसे:
BatchId RowId
जहां RowId उस पंक्ति का PK है जिसे हम अपडेट करना चाहते हैं, और BatchId केवल 300k पंक्तियों के इस "रन" को संदर्भित करता है (एक बार में कई को अनुमति देने के लिए)।
मैं एक नया बैचआईड उत्पन्न करूंगा (यह कुछ भी अनोखा हो सकता है-गाइड दिमाग में छलांग लगाता है), और इस टेबल पर टी रिकॉर्ड डालने के लिए एसक्लबुल्ककॉपी का उपयोग करें, यानी
100034 17
100034 22
...
100034 134556
मैं फिर शामिल होने और अद्यतन करने के लिए एक सिमल स्पोक का उपयोग करूंगा (और तालिका से बैच हटाएं)।
SqlBulkCopy सर्वर पर डेटा की इस मात्रा को प्राप्त करने का सबसे तेज़ तरीका है; आप राउंड-ट्रिप में नहीं डूबेंगे। EF वस्तु-उन्मुख है:बहुत सारे परिदृश्यों के लिए अच्छा है - लेकिन यह नहीं।