2012-10-15 24 views
10

मैं एमवीसी 4 के साथ ईएफ 5 का उपयोग कर रहा हूं। समस्या यह है कि मेरे डीबी में बड़ा डेटा है जिसे मैंने पहले से ही विरासत डीबी से आयात किया है। मॉडल बदलते समय मैं उस डेटा को लोड करना चाहता हूं। मेरा सवाल यह है कि मैं अपने डीबी में पहले से मौजूद डेटा की बड़ी मात्रा कैसे बीज कर सकता हूं?ईएफ 5 कोड प्रथम माइग्रेशन थोक SQL डेटा सीडिंग

internal sealed class Configuration : MigrationsConfiguration<VoiceLab.Models.EFDataContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

    protected override void Seed(VoiceLab.Models.EFDataContext context) 
    { 
    //what to do here to seed thousands or records that are already in db 
    } 

} 

धन्यवाद,

उत्तर

17

यहाँ आप सिर्फ बीज विधि में .sql फ़ाइलें प्रदान करके थोक डेटा बीज दे सकते हैं।

public class AppContextInitializer : CreateDatabaseIfNotExists<AppContext> 
{ 
    protected override void Seed(AppContext context) 
    { 
     var sqlFiles = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.sql").OrderBy(x => x); 
     foreach (string file in sqlFiles) 
     { 
      context.Database.ExecuteSqlCommand(File.ReadAllText(file)); 
     } 

     base.Seed(context); 
    } 
} 
+0

मुझे लगता है कि इस तरह से बिलाल के बारे में बात कर रहा था है: http://edspencer.me.uk/2012/10/30/seed-data-from-sql -scripts का इस्तेमाल करने वाली इकाई-ढांचा-माइग्रेशन-EF-4-3 / – Rahatur

0

कोड-आधारित माइग्रेशन मॉडल परिवर्तनों के बाद मौजूदा डेटाबेस (मैन्युअल डेटाबेस अपडेट) के लिए अनुशंसित दृष्टिकोण है। आप इसे पैकेज कमांड लाइन विंडोज़ में पावरशेल बना सकते हैं। इस तरह मौजूदा डेटा संरक्षित किया जाएगा।

यदि आप डेवलपर की एक टीम का हिस्सा हैं जो स्रोत नियंत्रण का उपयोग करते हैं तो आपको या तो पूरी तरह से स्वचालित माइग्रेशन या पूरी तरह कोड-आधारित माइग्रेशन का उपयोग करना चाहिए। टीम वातावरण में कोड-आधारित माइग्रेशन का उपयोग कर स्वचालित माइग्रेशन की सीमाओं को देखते हुए अनुशंसा की जाती है।

http://msdn.microsoft.com/en-us/data/jj591621

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

internal sealed class Configuration : MigrationsConfiguration<DataContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 

     // if model changes involve data lose 
     AutomaticMigrationDataLossAllowed = true; 

    } 

    protected override void Seed(DataContext context) 
    { 
    //seed only when creating or new database 
    } 

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