2010-12-19 10 views
6

CTP4 के साथ, मैं ऐसा करने में सक्षम हुआ करता था निम्नलिखित (suggested by ptrandem के रूप में):मॉडलबिल्डर कहाँ है। EF CTP5 में मेटाडेटाइनडेटा शामिल करें?

modelBuilder.IncludeMetadataInDatabase = false 
कोड की इस पंक्ति के साथ

, एफई मेरी डेटाबेस में EdmMetadata तालिका का निर्माण नहीं करता है, और मॉडल को ट्रैक नहीं करता परिवर्तन।

मैं नए CTP5 में यह पूरा करने के लिए एक रास्ता खोजने में असमर्थ था, इसलिए अब हर बार जब मैं अपने मॉडल बदलने के लिए, मैं इस मिल:

मॉडल 'MyContext' संदर्भ समर्थन के बाद से बदल गया है डेटाबेस बनाया गया था। मैन्युअल रूप से डेटाबेस को हटाएं/अपडेट करें, या डेटाबेस पर सेट करें। IDatabaseInitializer उदाहरण के साथ डेटाबेस प्रारंभ करें। उदाहरण के लिए, DropCreateDatabaseIfModelChanges रणनीति स्वचालित रूप से हटा दी जाएगी और डेटाबेस को पुन: स्थापित करेगा, और वैकल्पिक रूप से नए डेटा के साथ बीज करें।

तो, क्या सभी जानते हैं कि सीटीपी 5 में IncludeMetadataInDatabase संपत्ति कहां है? धन्यवाद।

उत्तर

11

CTP5 एक बहुत ही शांत भी शामिल है के रूप में है सुविधा प्लग करने योग्य सम्मेलन जिसे सम्मेलनों को जोड़ने/निकालने के लिए उपयोग किया जा सकता है। IncludeMetadataInDatabase हटा दिया गया है और एक
प्लगेबल परंपरा है कि आप के लिए एक ही बात करता है से बदला जा रहा:

modelBuilder.Conventions 
      .Remove<System.Data.Entity.Database.IncludeMetadataConvention>(); 
+0

धन्यवाद, मोर्तेज़ा। क्या आपको पता है कि ऐसा करने के बीच कोई अन्य अंतर है, और एडीओ.NET टीम ब्लॉग के रूप में केवल एडमेटाडेटा तालिका को छोड़ना है? बेहतर क्या है? –

+2

कोई समस्या नहीं है। मुझे लगता है कि टीम के ब्लॉग पर आपको जो मिला वह मौजूदा डेटाबेस के बारे में बात कर रहा है और मैंने सुझाव दिया है कि जब आप अपने ऑब्जेक्ट मॉडल से डीबी उत्पन्न कर रहे हों।दिन के अंत में दोनों के पास एक ही परिणाम होता है: आपके पास एक पीओसीओ ऑब्जेक्ट मॉडल है जो मेटाडेटा टेबल के बिना डेटाबेस के साथ काम करता है, इसलिए मुझे लगता है कि यह आपके परिदृश्य (एक नया डेटाबेस या मौजूदा एक) पर निर्भर करता है। –

+0

उत्कृष्ट। आपका बहुत बहुत धन्यवाद! –

1

इस सब को देख रहा है, और मुझे अपना प्रश्न पोस्ट करने के बाद सही जवाब मिलना पड़ा, डीयूएच। ADO.NET team blog से अधिकार:

CTP5 हम की जरूरत को हटा दिया है अतिरिक्त विन्यास प्रदर्शन जब एक मौजूदा डेटाबेस के लिए मानचित्रण। यदि कोड पहले पता चलता है कि यह को मौजूदा डेटाबेस स्कीमा पर इंगित कर रहा है कि यह नहीं बनाया गया है तो यह ' पर भरोसा करेगा' और स्कीमा के साथ पहले कोड का उपयोग करने का प्रयास करेगा। एक मौजूदा डेटाबेस के लिए बिंदु संहिता सबसे पहले करने के लिए सबसे आसान तरीका है एक ही नाम के साथ एक ऐप्लिकेशन/Web.config कनेक्शन स्ट्रिंग जोड़ने के लिए अपने व्युत्पन्न DbContext (...)

3

बंद करने की प्रारंभकर्ता तर्क CTP5 में बराबर: Global.asax में अपने Application_Start में, यह डालें:

System.Data.Entity.Database.DbDatabase.SetInitializer<MyDBContext>(null); 
3

एफई 4.1

में
protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Conventions.Remove<IncludeMetadataConvention>(); 
} 
संबंधित मुद्दे