5

मैं अब कुछ समय से ईएफ का उपयोग कर रहा हूं, हमेशा Model-First दृष्टिकोण में। अब मैं Code-First भूमि के माध्यम से रोमांच कर रहा हूं। बात यह है: मुझे स्वचालित तालिका निर्माण के साथ समस्याएं आ रही हैं।EntityFramework टेबल नहीं बना रहा

कुछ साइटों के मुताबिक यह संभव है। और मैंने सफलता के बिना अपने दृष्टिकोण की कोशिश की है।

यहाँ बातें मैं कोशिश की है में से एक है: Database.CreateIfNotExists()

कोई भाग्य ...

मेरे कनेक्शन स्ट्रिंग सही और काम कर रहा है। यदि मैं मैन्युअल रूप से तालिका जोड़ता हूं तो यह काम करता है। समस्या यह है कि जब मेरे पास टेबल नहीं बनाई गई है। यह सिर्फ इसलिए नहीं बनाया गया है जैसा कि मैंने कहा था।

मेरी कक्षाओं को सही तरीके से सजाया गया है। (दोबारा: यह काम कर रहा है जब मेरे पास डीबी बनाया गया है)

कोई सुझाव? क्या यह सुविधा वास्तव में काम करती है?

मैं उपयोग कर रहा हूँ:

दृश्य स्टूडियो 2010 व्यावसायिक

EntityFramework 4.3.1 आर 2

एसक्यूएल सर्वर 2008 (हालांकि मैं 4.1 के साथ भी करने की कोशिश की)

धन्यवाद अग्रिम रूप से।

+0

क्या आपने अपनी खुद की संदर्भ कक्षा बनाई है जो डीबीकॉन्टेक्स्ट से निकली है? और उसके बाद एक कॉल करें जो संदर्भ – Sergey

+2

डेटाबेस में DbSet इकाइयों का उपयोग करेगा। CreateIfNotExists() केवल डेटाबेस को ईएफ बनाने का कारण बनता है यदि डेटाबेस स्वयं मौजूद नहीं है (जिस स्थिति में यह डेटाबेस और तालिका बनाता है)। यदि डेटाबेस मौजूद है तो तालिका स्वचालित रूप से तालिका बनाने का कारण नहीं बनती है लेकिन तालिका गुम होती है। क्या यह हो सकता है कि आप क्या चल रहे हैं? –

+0

@ सर्गी हां, मैंने ऐसा किया। – eestein

उत्तर

5

तीन डेटाबेस प्रारंभकर्ता हैं जो इकाई ढांचे के साथ शामिल हैं, वे सभी IDatabaseInitializer<Context> इंटरफेस को लागू करते हैं। वे हैं:

  • CreateDatabaseIfNotExist (डिफ़ॉल्ट)
  • DropCreateDatabaseWhenModelChanges
  • DropCreateDatabaseAlways

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

यह Nuget पैकेज EFCodeFirst.CreateTablesOnly

एक अन्य विकल्प है कि अगर कुछ तुम सच में की जरूरत है अपने स्वयं के प्रारंभकर्ता बनाने के लिए है में है।

+0

आपके उत्तर के लिए धन्यवाद। बाद में आज रात मैं कोशिश करूँगा और आपको जवाब दूंगा कि यह जवाब स्वीकार कर कैसे चला गया। एक बार फिर धन्यवाद! – eestein

+0

आपका स्वागत है :) – Sergey

+0

यह काम किया, धन्यवाद आदमी। – eestein

संबंधित मुद्दे