2015-05-28 8 views
9

के लिए स्कीमा नाम सेट करना मुझे पता है कि मेरे संदर्भ में किसी तालिका के लिए स्कीमा कैसे सेट करें, लेकिन क्या संदर्भ में सभी तालिकाओं के लिए डिफ़ॉल्ट स्कीमा सेट करने का कोई तरीका है? यानीडीबीकॉन्टेक्स्ट

[Schema = "Ordering"] 
public class MyContext:DbContext 
{ 
    public MyContext() 
     : base("name=ConnectionString") 
    { 
    } 

    public DbSet<Student> Students { get; set; } 
} 

उत्तर

13

आप कॉन्फ़िगर कर सकते हैं अपने कस्टम के OnModelCreating विधि में डिफ़ॉल्ट स्कीमा DbContext वर्ग की तरह विरासत में मिला -

public class MyContext: DbContext 
     { 
      public MyContext(): base("MyContext") 
      { 
      } 

      public DbSet<Student> Students { get; set; } 

      protected override void OnModelCreating(DbModelBuilder modelBuilder) 
      { 
       //Configure default schema 
       modelBuilder.HasDefaultSchema("Ordering"); 
      } 
     } 

EF6 के साथ शुरू करने के लिए आप डेटाबेस स्कीमा निर्दिष्ट करने के लिए DbModelBuilder पर HasDefaultSchema विधि का उपयोग कर सकते हैं सभी तालिकाओं, संग्रहीत प्रक्रियाओं आदि के लिए उपयोग करें। यह डिफ़ॉल्ट सेटिंग किसी भी ऑब्जेक्ट के लिए ओवरराइड की जाएगी जिसे आप स्पष्ट रूप से एक अलग स्कीमा कॉन्फ़िगर करते हैं।

+1

जब मैंने "HasDefaultSchema" सेट करने का प्रयास किया, तो मुझे यह त्रुटि मिलती है - डेटाबेस का निर्माण करने के बाद संदर्भ का समर्थन बदल गया है। डेटाबेस अद्यतन करने के लिए कोड प्रथम माइग्रेशन का उपयोग करने पर विचार करें। क्या आप जानते हैं कि इसका समाधान कैसे करें या कारण क्या है? – superachu

+0

@AchuthaKrishnan हल करने के लिए कि आपको अपने माइग्रेशन को अपडेट करने की आवश्यकता है। यह एक अच्छा [ट्यूटोरियल] है (http://www.learnentityframeworkcore.com/migrations)। cmd प्रॉम्प्ट में, इसे चलाएं: dotnet ef डेटाबेस अद्यतन –

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