2017-02-23 6 views
7

मैं डॉटनेटकोर और इकाई फ्रेमवर्क कोर के साथ एक प्रोजेक्ट बनाता हूं। मैं MySQL डेटाबेस का उपयोग करता हूं और मैंने SapientGuardian.EntityFrameworkCore.MySql संस्करण 7.1.19 पर निर्भरता जोड़ा।EntityFramework Core Database.EnsureCreated डेटाबेस नहीं बनाता

public class SeedData 
{ 
    public static void Initialize(IServiceProvider serviceProvider) 
    { 
     using (MyDbContext context = new MyDbContext(serviceProvider.GetRequiredService<DbContextOptions<MyDbContext>>())) { 
      context.Database.EnsureCreated(); 
     } 
    } 
} 

वर्ग बीज के कॉल:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    // Other code 

    SeedData.Initialize(app.ApplicationServices); 
} 

और सेवा के विन्यास:

public void ConfigureServices(IServiceCollection services) 
{ 
    // Other code 

    // Add database 
    services.AddDbContext<MyDbContext>(options => { 
      options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")); 
    }); 

    services.AddScoped<Microsoft.EntityFrameworkCore.Infrastructure.IDbContextOptions, Microsoft.EntityFrameworkCore.DbContextOptions<MyDbContext>>(); 
} 

जब मैं शुरू

मैं एक SeedData वर्ग जहाँ मेरे डेटाबेस प्रारंभ बनाया प्रोजेक्ट मुझे EnsureCreate कॉल पर अपवाद मिलता है। अपवाद संदेश Authentication failed कहता है लेकिन यदि मैं मैन्युअल रूप से डेटाबेस (टेबल के बिना) बना देता हूं तो मेरा कनेक्शन स्ट्रिंग ठीक काम करता है और EnsureCreated बस मेरी इकाइयों के लिए टेबल बनाते हैं।

क्या गलत है? यह SapientGuardian.EntityFrameworkCore.MySql के साथ एक समस्या है?

+0

एरिक्स्कंडोला, क्या आपने इसे हल किया है? –

+0

@ जॉनस्मिथ, अभी तक – erikscandola

+0

@erikscandola क्या आपके पास खाली डेटाबेस मौजूद है? – bravohex

उत्तर

2

मुझे आपके द्वारा वर्णित एक ही समस्या थी। ऐसा लगता है कि सैपियंटगार्डियन प्रदाता के पास इस संस्करण में अपूर्ण कार्यान्वयन हो सकता है।

सैपिएंटगार्डियन प्रोजेक्ट का readme file वास्तव में Pomelo.EntityFrameworkCore.MySql जैसे अधिक सक्रिय रूप से बनाए रखा प्रदाता का उपयोग करने का सुझाव देता है। तो मैंने अपनी परियोजना को Pomelo में बदल दिया। अब EnsureCreated को कॉल करने के लिए डेटाबेस बनाता है और प्रमाणीकरण विफल अपवाद नहीं है।

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