[英]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.