2012-01-10 8 views
5

पूरा त्रुटि मैं हो रही है में जोड़ा गया है यह है: क्योंकि डेटाबेस मॉडल मेटाडाटा शामिल नहीं हैएसक्यूएल सर्वर 2008: सुनिश्चित करें कि IncludeMetadataConvention DbModelBuilder सम्मेलनों

मॉडल संगतता की जाँच नहीं की जा सकती है। यह सुनिश्चित करें कि MetadataConvention को डीबीमोडेलबिल्डर सम्मेलनों में जोड़ा गया है।

मैंने SQL सर्वर कॉम्पैक्ट के साथ इसका उपयोग किया है और यह ठीक काम करता है, लेकिन होस्टिंग प्रदाता केवल समर्पित सर्वरों के लिए सीई का समर्थन करता है, इसलिए मैं एक साझा योजना पर हूं, इसलिए मैं SQL Server 2008 का उपयोग कर रहा हूं। मेरा कनेक्शन स्ट्रिंग डीबी निम्न प्रारूप में है:

<connectionStrings> 
    <add name="DBContext" 
     connectionString="Data Source=1.1.1.1;Initial Catalog=dbname;User Id=user;Password=pass;" 
     providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

मेरे पास एक डेटाबेसइनेनाइज़र भी है जो Application_Startup में चलता है। यदि कोई और कोड जरूरी है, तो बस मुझे बताएं? मेरे पास एडीएमएक्स डेटा मॉडल भी नहीं है, मैं ईएफ कोड फर्स्ट का उपयोग कर रहा हूं।

मैंने प्रारंभकर्ता कोड को हमेशा डेटाबेस ड्रॉप किया, लेकिन अब मुझे त्रुटि मिलती है, डाटाबेस 'मास्टर' में डाटाबेस अनुमति को अस्वीकार कर दिया गया है। मुझे नहीं पता कि मुझे यह क्यों मिलता है जब मैं इसे प्रारंभिक कैटलॉग का उपयोग करने के लिए कहता हूं।

मैं अब के लिए SetInitializer को अशक्त में गुजर रहा है, लेकिन अब मैं निम्नलिखित त्रुटि मिलती है:

नहीं खोल सकता डेटाबेस "dbname" लॉगिन द्वारा अनुरोध किया। लॉगिन विफल रहा। उपयोगकर्ता 'उपयोगकर्ता' के लिए लॉगिन विफल रहा।

मैं अभी भी ऊपर से कनेक्शनस्ट्रिंग का उपयोग कर रहा हूं।

उत्तर

4

I changed the initializer code Drop the database always, but now I get the error, CREATE DATABASE permission denied in database 'master'. I don't know why I get this when I telling it the Initial Catalog to use.

आप साझा होस्टिंग में ऐसा कभी नहीं होना चाहिए क्योंकि आप लगभग सीधे डेटाबेस बनाने की अनुमति कभी नहीं। डेटाबेस केवल होस्टिंग प्रदाता के विशेष इंटरफेस में बनाया जा सकता है। SQL सर्वर आपको अपने डेटाबेस को हटाने की अनुमति देता है लेकिन एक बार जब आप इसे हटा देते हैं तो आपकी अनुमतियां समाप्त हो जाती हैं और आप डाटाबेस बनाने की अनुमति के बिना इसे फिर से नहीं बना सकते हैं (साझा होस्टिंग में आपको कभी भी यह अनुमति नहीं है)।

I am passing in null to the SetInitializer for now, but now I get the following error:

यह बहुत देर हो चुकी है। आपका डेटाबेस हटा दिया गया है। आपको इसे होस्टिंग प्रदाता इंटरफ़ेस के माध्यम से बनाना होगा या इसे फिर से बनाने के लिए अपने होस्टिंग प्रदाता से संपर्क करना होगा।

I also have a DatabaseInitializer that runs in Application_Startup.

आप साझा होस्टिंग में किसी अंतर्निहित डेटाबेस प्रारंभकर्ता का उपयोग नहीं कर सकते हैं क्योंकि उनमें से सभी उम्मीद करते हैं कि वे डेटाबेस बनाएंगे। मौजूदा डेटाबेस में टेबल भरने के लिए आप custom initializer का उपयोग कर सकते हैं।

+0

जैसा कि मैं इस माध्यम से कदम उठा रहा था, मुझे एहसास हुआ कि आप जो कुछ कह रहे हैं और क्या हो रहा था। अब भी अगर मेरे पास डेटाबेस बनाया गया है, तो यह मेरी टेबल मूवीज़ नहीं बना रहा है। यह dbo कह रहा है। Movies एक अवैध वस्तु है। मेरे पास डीबीएसईटी कोड – Xaisoft

+0

में मूवीज़ {get; set;} है जो पिछले पैराग्राफ में समझाया गया है। अंतर्निहित डेटाबेस प्रारंभकर्ता केवल डेटाबेस और टेबल बना सकते हैं। वे मौजूदा डेटाबेस को टेबल के साथ भर नहीं पाएंगे, इसलिए आपका डेटाबेस अभी भी खाली है। –

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