2017-02-23 170 views
7

我使用dotnetcore和實體框架核心創建一個項目。我使用MySql數據庫,並且我添加了對SapientGuardian.EntityFrameworkCore.MySql版本7.1.19的依賴。EntityFramework核心數據庫.EnsureCreated不創建數據庫

我創建了一個SeedData類,其中初始化我的數據庫:

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>>(); 
} 

當我開始該項目我在EnsureCreate電話上遇到異常。異常消息說Authentication failed,但如果我手動創建數據庫(沒有表),我的連接字符串工作正常,EnsureCreated只爲我的實體創建表。

怎麼了?這是SapientGuardian.EntityFrameworkCore.MySql的問題?

+0

erikscandola,你解決了嗎? –

+0

@JohnSmith,還不是 – erikscandola

+0

@erikscandola你有一個空的數據庫是否存在? – bravohex

回答

2

我遇到了同樣的問題。看起來SapientGuardian提供者在這個版本中可能只是不完整的實現。

SapientGuardian項目的readme file實際上建議使用更積極維護的提供商,如Pomelo.EntityFrameworkCore.MySql。所以我把我的項目交給了柚子。現在,對EnsureCreated的調用按預期創建數據庫,並且沒有認證失敗的異常。