इकाई फ्रेमवर्क में डेटाबेस स्कीमा अद्यतन करें

मैंने वीएस एसपी 1 स्थापित किया और एंटीटी फ्रेमवर्क के साथ खेला।

मैंने एक मौजूदा डेटाबेस से एक स्कीमा बनाया और कुछ बुनियादी परिचालनों की कोशिश की।

डेटाबेस स्कीमा अद्यतन को छोड़कर, इसमें से अधिकांश अच्छी तरह से चला गया।

मैंने डेटाबेस को हर बुनियादी तरीके से बदल दिया:

  • एक नई तालिका जोड़ा
  • एक तालिका हटा दी
  • किसी मौजूदा तालिका में एक नया कॉलम जोड़ा
  • किसी मौजूदा तालिका से कॉलम हटा दिया
  • मौजूदा कॉलम के प्रकार को बदल दिया

पहले तीन अच्छी तरह से चला गया, लेकिन प्रकार परिवर्तन और कॉलम हटाना डेटाबेस परिवर्तनों का पालन नहीं किया था।

डिजाइनर से काम करने का कोई तरीका है? या यह इस समय समर्थित नहीं है? मुझे अभी तक कोई संबंधित सामग्री नहीं मिली है, लेकिन अभी भी खोज रही है।

0
ro fr bn
हां, अब यह बहुत परिपक्व है, कोडफर्स्ट के साथ मुझे अब यह समस्या नहीं है।
जोड़ा लेखक Biri, स्रोत
महान सवाल हाल ही में और कुछ साल पहले एक ही मुद्दा था। :-) शायद उल्लेख करने लायक है, मौजूदा कॉलम का नाम बदलने से सिरदर्द हो सकता है।
जोड़ा लेखक mnemonic, स्रोत

6 उत्तर

मुझे लगता है कि संभवतः वे ऐसा नहीं होते क्योंकि वे मौजूदा कोड के निर्माण को तोड़ देंगे, लेकिन यह मेरे हिस्से पर सिर्फ एक अनुमान है।

मेरा तर्क यहां दिया गया है:

सबसे पहले, ईएफ को 1: 1 टेबल मैपिंग से अधिक माना जाता है, इसलिए यह काफी संभव है कि सिर्फ इसलिए कि आप तालिका ए से कॉलम हटा रहे हैं, इसका मतलब यह नहीं है कि उस इकाई के लिए, कोई संपत्ति विवरण नहीं होना चाहिए। आप उस संपत्ति को किसी अन्य तालिका में मैप कर सकते हैं।

दूसरा, एक प्रकार को बदलना सिर्फ बिल्ड तोड़ सकता है। यह एकमात्र तर्क है।

0
जोड़ा
एक प्रकार को बदलना बिल्ड तोड़ सकता है, लेकिन वास्तविक दुनिया में यह होता है। RoR या Django के लिए बहुत कम घर्षण प्रक्रिया है। "ब्रेक" को संभालने के लिए आप डेटा माइग्रेशन बनाते हैं। यदि ईएफ में ऐसा नहीं है तो पकड़ने के लिए बहुत कुछ है।
जोड़ा लेखक Csaba Toth, स्रोत

मैंने आपके अनुरोध के समान एप्लिकेशन बनाया है। लेकिन मेरा समाधान कठिन था। मैं बताने की कोशिश करूंगा;

  1. You have to create your own database management clases and these objects will be responsible for create, update database schema (I created manually that).

  2. I saw good article and source code on ADO.NET Team blog then you can also download EDMTools from this blog, it open source. And you can also implement model generation and update routines from that into your project.

  3. Finally when the your schema changed you should recreate and bind your model and rebuild your data assembly during runtime. But you have to know most important think, you should tie your data model assembly to your project with loosely coupled (check out this post)

    Other way, you should wait for EF 4.0 release (it CTP 1 now), they announced that they will provide create,delete,update DatabaseScript functions.

अच्छा ताला

0
जोड़ा

मैंने देखा है कि डिजाइनर के डेमो से, यह एक निर्दोष उपकरण नहीं है। यह एक संस्करण 1.0 उत्पाद है, इसलिए यह कुछ दर्द बिंदु होने के लिए बाध्य है। परिवर्तन प्रकार उनमें से एक ऐसा लगता है। डिजाइनर और कोड पीढ़ी को देखने से, मुझे लगा कि कोई संकलन समय (संभवतः नहीं) या रन-टाइम पर टूट जाएगा (जब मॉडल वास्तव में निष्पादित होता है)।

0
जोड़ा

आपको डिज़ाइनर या एक्सएमएल फ़ाइल से कॉलम को हटाना होगा।

0
जोड़ा

मैंने पाया है कि, सामान्य रूप से, 'डेटाबेस से अद्यतन मॉडल' कार्यक्षमता के साथ अभी भी कुछ बग हैं।

कुंजी मेरे लिए हत्यारा हैं - मेरे पास अभी तक किसी विदेशी कुंजी संबंध में कोई संशोधन नहीं है या किसी तालिका में प्राथमिक कुंजी जोड़ने के लिए और अद्यतनकर्ता सही तरीके से काम नहीं करता है (उसमें यह जेनरेट पर संकलित त्रुटि देगा कोड) - लेकिन समस्या को हल करने के लिए यह मॉडल को हटाने और फिर से आयात करने का एक साधारण मामला है (केवल एक मिनट लेता है) - यह आदर्श रूप से आदर्श से कम है, लेकिन मुझे कभी भी 'ताजा' आयात से विफलता नहीं मिली है।

0
जोड़ा
इसे हटाने और शुरू करने में इतना गलत लगा ... लेकिन मुझे लगता है कि मैं अकेला व्यक्ति नहीं हूं जिसे इसका सहारा लेना पड़ा!
जोड़ा लेखक Matt Bridges, स्रोत

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

मैं प्रक्रिया को आसान बनाने के लिए अच्छे या बुरे (संबंधों के लिए गैरकानूनी नामित कॉलम सहित) के लिए ईएफ कोड प्रथम कक्षाओं के साथ छेड़छाड़ नहीं कर रहा हूं।

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

0
जोड़ा