का उपयोग करते समय डेटाबेस को स्पष्ट रूप से नामित करने के लिए मैंने हाल ही में एंटीटी फ्रेमवर्क माइग्रेशन का उपयोग करना शुरू कर दिया है और देखा है कि जब मैं Update-Database
कमांड चलाता हूं तो डेटाबेस नाम मेरे लिए नहीं खींच रहा है।एंटिटी फ्रेमवर्क माइग्रेशन 4.3
मेरे connectionstring है:
<connectionStrings>
<add name="DataContext" connectionString="Server=.\SQLEXPRESS;Initial Catalog=TestDB;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" />
</connectionStrings>
बहुत पहली बार मैं चलाने अद्यतन-डाटाबेस मेरी डेटाबेस सही नाम TestDB साथ बनाया जाता है। हालांकि, जैसे ही मैं जब तक मैं एक अप परियोजना प्रारंभ नाम जोड़ने यह किसी भी अब मेरे लिए अपडेट नहीं करेंगे मेरी संस्थाओं में से एक में कोई परिवर्तन करने के रूप में (मैं एक बहु परियोजना समाधान का उपयोग कर रहा): तो
Update-Database -StartUpProjectName "TestDB.Data"
यह एक और नया डेटाबेस बनाता है जो माइग्रेशन हमेशा उपयोग करना जारी रखेगा। मैं StartUpProjectName आदेश में डाल करने के लिए कोई आपत्ति नहीं है लेकिन वहाँ डेटाबेस इस उत्पादन के लिए डिफ़ॉल्ट नाम ओवरराइड करने के लिए एक तरीका है? यह हमेशा के रूप में
TestDB.Data.DataContext
डेटाबेस बनाता है वहाँ यह सुनिश्चित करें कि डेटाबेस जब StartUpProject नाम गुजर बनाया सिर्फ TestDB कहा जाता है एक रास्ता है या इस StartUpProjectName सेटिंग का उपयोग की एक सीमा है?
एक नोट के रूप में, मुझे लगता है कि कारण मैं StartUpProjectName निर्दिष्ट करने की आवश्यकता है कि मैं एक बहुपरत परियोजना सेटअप है। माइग्रेशन विन्यास फ़ाइल मेरे 'डाटा' परियोजना में है, संस्थाओं/मॉडल, आदि मेरी 'डोमेन' परियोजना में हैं मैं भी है वर्तमान में किसी भी प्रारंभ मेरी Global.asax.cs फ़ाइल में विकल्प के रूप मैं पहले पर इस्तेमाल होता नहीं कोड पहले ef 4.2। तो मेरी परियोजना में मेरे पास सिर्फ मेरे डेटा प्रोजेक्ट में डेटा कॉन्टेक्स्ट है और उस प्रोजेक्ट में माइग्रेशन कॉन्फ़िगरेशन भी है।
संपादित करें:
मैं मूल रूप से सेटअप इस सवाल का मैं 'सही' जिस तरह से एक multiproject समाधान में एक डेटाबेस नाम है पर ठोकर खाई के बाद से। जबकि नीचे दिया गया जवाब काम करेगा, इसका मतलब यह है कि आप अपने web.config को दूसरे क्षेत्र में डुप्लिकेट कर रहे हैं जो आदर्श समाधान नहीं है। इसके बजाय आप सिर्फ नाम अपने DbContext में कुछ इस तरह करने से रख सकते हैं (DataContext सिर्फ नाम मैं अपने प्रोजेक्ट में प्रयोग किया जाता है):
public class DataContext : DbContext
{
public DataContext() : base("DatabaseNameHere")
{ }
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public virtual void Commit()
{
base.SaveChanges();
}
}
धन्यवाद,
रिच
अपने संपादित करने के लिए धन्यवाद मुझे बहुत answer..helped .. – Josh
संपादित जवाब एक मणि है! – P6345uk
इसके अतिरिक्त, मुझे यह आलेख उपयोगी पाया। http://msdn.microsoft.com/en-us/data/jj592674.aspx – billb