Sql सर्वर डाटा टूल्स और एंटिटी फ्रेमवर्क - क्या यहां कोई तालमेल है?


11

Linq2Sql का उपयोग करते हुए एक परियोजना से बाहर निकलते हुए, मुझे संदेह है कि अगला (बड़ा) कोई मुझे एंटोनियो फ्रेमवर्क की बाहों में धकेल सकता है। मैंने इस विषय पर कुछ पठन-पाठन किया है, लेकिन जो मैंने नहीं पाया है वह एक सुसंगत कहानी है कि SQL सर्वर डेटा टूल्स और एंटिटी फ्रेमवर्क को एक साथ कैसे इस्तेमाल किया जा सकता है / हो सकता है।

  • क्या वे पूरी तरह से अलग-अलग कल्पना करते थे, और उन्हें एक साथ इस्तेमाल करना गलत तरीका है?
  • क्या वे किसी तरह पूरी तरह से रूढ़िवादी हैं और मुझे इस बात की याद आ रही है?

कुछ कारणों से मुझे लगता है कि मैं दोनों को चाह सकता हूं:

  • SSDT 'संकलित' (चेक किया हुआ) और आसानी से उपलब्ध होने योग्य sql और स्कीमा के लिए बहुत अच्छा है
  • लेकिन SSDT 'माइग्रेशन / अपडेट' कहानी आश्वस्त नहीं है (मेरे लिए): स्कीमा के लिए "कुछ भी अपडेट करें" ठीक काम करता है, लेकिन इसका कोई तरीका नहीं है (AFAIK) कि यह कभी भी डेटा के लिए काम कर सकता है।
  • दूसरी ओर, मैंने यह जानने के लिए ईएफ माइग्रेशन की कोशिश नहीं की है कि क्या यह समान समस्याएं प्रस्तुत करता है, लेकिन अप / डाउन बिट्स काफी उपयोगी हैं।

ऐसा लगता है कि ईएफ टीम पर विचार कर रही है। github.com/aspnet/EntityFramework/issues/4321
Snjbjørn

जवाबों:


9

मुझे दूसरे दृष्टिकोण से कहना चाहिए। एंटिटी फ्रेमवर्क डेटाबेस रखरखाव किसी भी उद्यम या बड़े डेटाबेस प्रोजेक्ट में पूरी तरह से बेकार है।

समस्याएं हैं:

  • स्वचालित स्कीमा अद्यतन। यह बिल्कुल वैसा नहीं है जैसा मैं चाहता हूं क्योंकि यह डेटाबेस रखरखाव के मूल सिद्धांतों का पूरी तरह से उल्लंघन करता है। समस्याएँ हैं: (ए) एक नया संस्करण चलाने वाला कोई व्यक्ति किसी समस्या को प्राप्त करने के बजाय डेटाबेस को अपडेट करता है और (बी) अपडेट सामान्य रूप से बैकअप एफआईआरएसटी लेने के साथ डीबीए के साथ निर्धारित किया जाता है। तो, स्वचालित अपडेट बेकार हैं।

  • डीबी निर्माण केवल मूल रूप से पतले किनारे के मामलों पर काम करता है। उन्नत डेटाबेस सुविधाओं का उपयोग करने की कोशिश भी न करें - चाहे जो भी हो। Sql सर्वर उदाहरण: सूचकांकों में फ़ील्ड्स, सूचकांकों पर फ़िल्टर, विभाजन, संपीड़न, फ़ील्ड के लिए सत्यापन नियम शामिल हैं।

  • माइग्रेशन - पतले किनारे के मामलों को फिर से मानता है: कोई डेटा परिवर्तन या मल्टी स्टेप अपडेट आसानी से नहीं। उदाहरण: तालिका X में एक ऐतिहासिक "उपयोगकर्ता" फ़ील्ड है जो उपयोगकर्ता को कुछ रिकॉर्ड करता है। नए सेटअप में एक उपयोगकर्ता तालिका है, इसलिए उपयोगकर्ता तालिका बनाने की आवश्यकता है, फिर उपयोगकर्ताओं को बनाएं, फिर तालिका x में उपयोगकर्ता संदर्भ फ़ील्ड बनाएं, फिर उपयोगकर्ता तालिका से उपयोगकर्ता के साथ इसे अपडेट करें, फिर उपयोगकर्ता फ़ील्ड हटाएं।

इन परिदृश्यों से निपटने का एकमात्र समझदार तरीका पीढ़ी और प्रवासन स्क्रिप्ट और उचित संस्करण हैं।

अब, SSDT - यह एक विशिष्ट डेटाबेस संस्करण को एंटिटी फ्रेमवर्क की तुलना में बहुत बेहतर रूप में संस्करण के लिए एक महान उपकरण है क्योंकि यह वास्तव में काम करता है। जैसे: यह सभी विशेषताओं को रिकॉर्ड करता है। डेटाबेस में से कोई भी मेरे पास नहीं है, मैं बहुत पहले कोड का उपयोग कर सकता हूं - क्योंकि हमने हमेशा कम से कम सूचकांकों को फ़िल्टर किया है;) EF को मुझे 10% भी नहीं मिलेगा जो मुझे चाहिए।

हमारा दृष्टिकोण है:

  • डेटाबेस में डिज़ाइन डेटाबेस, फिर एक एसएसडीटी मॉड्यूल के साथ सिंक करें जो चेक इन हो जाता है। स्कीमा सिंक डेवलपर्स को अपने संस्करण को तेजी से अपडेट करने की अनुमति देता है। वर्तमान संस्करण के साथ हमेशा एक आधिकारिक मास्टर डेटाबेस होता है कहीं (एक विशेष सर्वर पर) तो हमारे पास काम करने के लिए एक संदर्भ संस्करण है।

  • डेल्टा स्क्रिप्ट को रिलीज़ के लिए आवश्यकतानुसार बनाएँ जो संस्करणबद्ध भी हों और उन्हें डेटाबेस में तैनात करने के लिए एक अच्छा तंत्र हो।


3

SQL सर्वर डेटाबेस के साथ EF का उपयोग करने का एक से अधिक तरीका है।

  1. कोड-प्रथम ... आप कक्षाएं लिखते हैं, और ईएफ संबंधित तालिकाओं को उत्पन्न करता है
  2. डेटाबेस पहले ... आप तालिकाओं को डिज़ाइन करते हैं, और EF कक्षाएं उत्पन्न करता है।

ईएफ जरूरी नहीं कि आपके लिए सभी काम करे। ईएफ आपको वहां लगभग 80 से 95 प्रतिशत मिलेगा। आपके डेटाबेस के विकास के प्रयास के अन्य 5 से 20 प्रतिशत व्यू और संग्रहित प्रक्रियाओं जैसे अनुकूलन के साथ पूरक होंगे।

तो नहीं, वे ऑर्थोगोनल नहीं हैं। लेकिन आपको यह तय करना होगा कि आपकी समग्र डिजाइन रणनीति क्या होगी, और फिर उन हिस्सों को अनुकूलित करने में आपकी मदद करने के लिए एसएसडीटी जैसे उपकरणों पर भरोसा करें जहां ईएफ आदर्श परिणामों से कम उत्पादन करता है।


अजीब, यह जवाब मेरे इनबॉक्स में नहीं दिखा ...
बेंजोल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.