簡體   English   中英

EntityFramework Core Database.EnsureCreated不會創建數據庫

[英]EntityFramework Core Database.EnsureCreated doesn't create database

我用dotnetcore和實體框架核心創建一個項目。 我使用MySQL數據庫和我說依賴性SapientGuardian.EntityFrameworkCore.MySql版本7.1.19

我創建了一個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有問題嗎?

我遇到了您描述的相同問題。 看起來SapientGuardian提供程序可能只是在此版本中實現不完整。

SapientGuardian項目的自述文件實際上建議使用維護程度更高的提供程序,例如Pomelo.EntityFrameworkCore.MySql 因此我將項目切換到Pomelo。 現在,對確保創建的調用將按預期方式創建數據庫,並且沒有身份驗證失敗異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM