हाँ। मुद्दा यह है कि वास्तविक डेटाबेस का उपयोग केवल एकीकरण परीक्षणों के लिए किया जाता है, जिन्हें इतनी बार निष्पादित नहीं करना पड़ता है और एकीकरण परीक्षणों का पूरा सेट आमतौर पर केवल बिल्ड सर्वर पर ही निष्पादित किया जाता है।
इसकी वजह है इकाई परीक्षण के दौरान EF का धीमा प्रारंभ (आप x86 पर स्विच करने का प्रयास कर सकते हैं)। दृश्य पीढ़ी द्वारा भी समय की खपत होती है। दृश्य पूर्व-उत्पन्न किए जा सकते हैं जो आमतौर पर वास्तविक सिस्टम के स्टार्टअप और इनिशियलाइज़ेशन को कम करने के लिए किया जाता है, लेकिन प्री-जेनरेशन व्यू का उपयोग करके यूनिट परीक्षणों को तेज करने के मामले में बहुत अधिक मदद नहीं करेगा क्योंकि आप परीक्षण से निर्माण के लिए समय को स्थानांतरित कर देंगे।
चारों ओर जाने का मतलब सिर्फ सादा पुरानी एसक्यूएल स्क्रिप्ट का उपयोग करना होगा। इस ऑपरेशन के लिए आवश्यक अतिरिक्त समय उस SQL को बनाने में खर्च किया जा सकता है। मुझे लगता है कि एसक्यूएल को कैश नहीं किया गया है क्योंकि सामान्य एप्लिकेशन निष्पादन को आम तौर पर एक से अधिक बार इसकी आवश्यकता नहीं होती है, लेकिन आप ईएफ से आपको उस एसक्यूएल के सबसे महत्वपूर्ण हिस्से को देने के लिए कह सकते हैं, इसे कहीं कैश करें और हर बार जब आपको इसकी आवश्यकता हो तो इसे स्वयं निष्पादित करें . EF आपको तालिकाओं और बाधाओं के लिए SQL देने में सक्षम है:
var dbSql = ((IObjectContextAdapter) context).ObjectContext.CreateDatabaseScript();
डेटाबेस बनाने और उन्हें एक साथ उपयोग करने के लिए आपको बस अपना छोटा एसक्यूएल होना चाहिए। निम्नलिखित स्क्रिप्ट जैसा कुछ भी पर्याप्त होना चाहिए:
CREATE DATABASE YourDatabaseName
USE YourDatabaseName
यह काम करने और प्रक्रिया पर नियंत्रण रखने के लिए आपको पहले कोड में डेटाबेस जनरेशन को भी बंद करना होगा:
Database.SetInitializer<YourContextType>(null);
डेटाबेस निर्माण SQL निष्पादित करते समय आपको Master
. की ओर इशारा करते हुए अलग कनेक्शन स्ट्रिंग की आवश्यकता होगी डेटाबेस।