【发布时间】:2017-07-13 18:45:29
【问题描述】:
我创建了一个带有 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有问题吗?
【问题讨论】:
-
erikscandola,你解决了吗?
-
@JohnSmith,还没有
-
@erikscandola 你有空数据库吗?
-
@bravohex 我没有数据库
-
我认为你应该先在mysql中创建空数据库。然后使用 ef code-first 来更新数据库
标签: c# mysql .net-core entity-framework-core