2011-04-07 15 views
9

इकाई फ्रेमवर्क 4.1 कोड पहले SQLEXPRESSlocalhost पर डेटाबैक अनुमति अस्वीकार कर दिया गया है। हालांकि, अब मैं नियमित SQL 2008 server से कनेक्ट करने के लिए तैयार हूं।ईएफ 4.1 सीएफ: डेटा 'मास्टर'

  1. मैंने एक नया डेटाबेस "न्यूईएफडेटाबेस" बनाया है।

  2. तब एकीकृत सुरक्षा के साथ अपने नए डेटाबेस को इंगित करने के Web.config में connectionString बदल मेरी "ApplicationServices"।

लेकिन तब मैं इस त्रुटि मिलती है:

"CREATE DATABASE permission denied in database 'master'."

तो ...

क) अनुमतियाँ एफई 4.1 सीएफ को कहा की जरूरत एसक्यूएल सर्वर अपने काम करने के लिए करता है ?

बी) क्या मैं SQL 2008 पर ईएफ 4.1 सीएफ के लिए एक खाली डेटाबेस सेट कर सकता हूं, या क्या मुझे यह सब मेरे लिए काम करने देना है?

Database.SetInitializer<MyDbContext>(null); 

:

उत्तर

13

आप अपने कोड में null करने के लिए अपने डेटाबेस प्रारंभकर्ता तैयार करना न भूलें गए (मुझे यकीन है कि मेरी डीबीए मेरी एफई एप्लिकेशन अधिकार दे दिया है एक विशेष डेटाबेस के बाहर कुछ भी करने को जानना चाहेंगे नहीं कर रहा हूँ) सभी अंतर्निहित कार्यान्वयन यदि प्रारंभकर्ता एक नया डेटाबेस ड्रॉप या बनाने का प्रयास कर सकता है। आपको मिली त्रुटि से संकेत मिलता है कि EF ने डेटाबेस को ड्रॉप/बनाने का प्रयास किया है लेकिन आपके SQL सर्वर इंस्टेंस में ऐसा करने का अधिकार नहीं है। ऊपर की रेखा सामान्य रूप से इससे बचने का एकमात्र विकल्प है और लाइव वातावरण के लिए उपयुक्त है (मुझे लगता है कि यहां तक ​​कि बिल्कुल जरूरी है) जहां भी आप आकस्मिक विलोपन नहीं चाहते हैं (मॉडल में परिवर्तन या कुछ के कारण)।

+0

नहीं मैंने कोशिश नहीं की थी। मैं इसे जाने दूंगा। उस स्थिति में क्या मुझे अपने स्थानीय स्क्लेक्सप्रेस से अपना डेटा और स्कीमा माइग्रेट करना चाहिए? मैंने सोचा था कि यह मेरे लक्षित स्थान में डेटाबेस का निर्माण कर सकता है। लेकिन यह ड्रॉप-निर्माण चरण के बारे में भूल गया। –

+1

@Dan: हां, यदि आप प्रारंभकर्ता को 'null' पर सेट करते हैं तो आपको लक्ष्य उदाहरण पर डीबी माइग्रेट करना होगा। इस मामले में डीबी स्कीमा और ईएफ मॉडल से मेल खाना चाहिए, ईएफ स्कीमा को अपडेट या फिर से नहीं करेगा और स्कीमा और मॉडल मेल नहीं खाता है तो शायद अपवाद फेंक देगा। – Slauma

+1

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

3

SQL सर्वर के भीतर अपने एप्लिकेशन के लिए लॉगिन सेट अप करें। उस उपयोगकर्ता को डीबीक्रिएटर अनुमति दें (लॉगिन पर राइट क्लिक करके, सर्वर भूमिकाओं पर जाएं, और "डीबीक्रिएटर" चेकबॉक्स को चेक करें)

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