2015-04-23 6 views
5

मैं उपयोग कर रहा हूँ इकाई की रूपरेखा इस DbMigrationsConfiguration के साथ 6:इकाई की रूपरेखा: केवल बीज जब निर्माण प्रारंभिक डेटाबेस

public sealed class Configuration : DbMigrationsConfiguration<DataContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

    protected override void Seed(Danfoss.EnergyEfficiency.Data.DataContext context) 
    { 
     //Adding initial data to context 

     context.SaveChanges(); 
    } 

} 

मैं वेबएपीआई में यह उपयोग कर रहा हूँ इस तरह से:

public static void Register(HttpConfiguration config) 
{ 
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>()); 
} 

मैंने देखा है कि हर बार मेरा आवेदन शुरू होने पर Seed फ़ंक्शन चल रहा है। मेरे द्वारा इसे कैसे रोका जा सकता है? जब मैं प्रारंभिक तालिकाओं का निर्माण करता हूं, तो मुझे इसे पहली बार चलाने के लिए पसंद है।

+0

मेरी परियोजनाओं में मैं ['AddOrUpdate'] (https://msdn.microsoft.com/en-us/library/hh846514%28v=vs.103%29.aspx) का उपयोग करता हूं। कुछ 'context.Table.AddOrUpdate (इकाई => इकाई.आईडी, नई इकाई {आईडी = 1}) की तरह कुछ; '। क्या इससे काम हो जायेगा? – Default

+0

मैं इसे भी कर रहा हूं। लेकिन मेरे बीज विधि में कुछ सीएसवी आयात सहित हैंडल करने के लिए बहुत सारे डेटा हैं। मुझे यह पसंद नहीं है कि हर बार जब मैं अपना आवेदन शुरू करूं। – dhrm

+0

आपके पास एक बिट टेबल के साथ एक सेटिंग टेबल हो सकती है जिसमें कहा गया है कि डेटाबेस बीजिंग किया गया है या नहीं और उसके बाद बीज विधि शुरू होने पर उस मान से कार्य करें, उदा। जब आपको पता चला कि बीज पहले ही इस्तेमाल हो चुका है तो तुरंत लौट रहा है। – Santhos

उत्तर

4

DbMigrationsConfiguration.Seed विधि हर बार कॉल किया जाता है जब आप Update-Database पर कॉल करते हैं। इसके पीछे तर्क One Unicorn द्वारा इस ब्लॉग में समझाया गया है।

इसका मतलब है कि आपको मौजूदा डेटा से निपटने के लिए अपना Seed कोड लिखना है। यदि आपको यह पसंद नहीं है, तो आप CodePlex पर बदलाव के लिए मतदान कर सकते हैं।

इस बीच में, ब्लॉग उद्धृत करने के लिए:

सबसे अच्छा तरीका यह संभाल करने के लिए हर इकाई AddOrUpdate का उपयोग नहीं करने के लिए आमतौर पर है, लेकिन इसके बजाय मौजूदा डेटा के लिए डेटाबेस की जाँच के बारे में अधिक जानबूझकर होने के लिए उपयुक्त किसी भी तंत्र का उपयोग कर। उदाहरण के लिए, बीज की जाँच कर सकते हैं या नहीं, एक प्रतिनिधि इकाई मौजूद है और फिर उस परिणाम पर शाखा या तो अद्यतन करने के लिए सब कुछ या

सम्मिलित सब कुछ एक अन्य विकल्प है कि मैं अतीत में इस्तेमाल किया है, खड़े जोड़ना है डेटा जो Sql कमांड का उपयोग करते हुए माइग्रेशन में माइग्रेशन से संबंधित है। इस तरह यह केवल एक बार चलाता है। मैंने इससे दूर जाने का प्रयास किया है क्योंकि मैं बीजिंग को एक ही स्थान पर रखना पसंद करता हूं।

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