# 下载起始模板

下载 ASP.NET COREEntity Framnework Core 的起始模板以集成MySQL。 本文档将介绍使用ASP.NET Core 2.x+.NET Core Framework + 身份验证的多页模板

# 准备开始

微软官方文档中提到了两个用于MySQL的实体框架核心提供程序。其中一个是官方 MySQL EF核心数据库提供程序,另一个是用于MySQL的Pomelo EF核心数据库提供程序

注意: 官方提供程序尚不支持EF Core 2.0,因此将在此示例中使用Pomelo EF核心数据库提供程序。

相关问题: https://github.com/aspnet/EntityFrameworkCore/issues/10065#issuecomment-336495475

# 安装

Pomelo.EntityFrameworkCore.MySql NuGet包安装到 .EntityFrameworkCore 项目。

# 配置

# 配置 DbContext

YourProjectNameDbContextConfigurer.cs 用下面的代码段进行替换

public static class MySqlDemoDbContextConfigurer
{
    public static void Configure(DbContextOptionsBuilder<MySqlDemoDbContext> builder, string connectionString)
    {
        builder.UseMySql(connectionString);
    }

    public static void Configure(DbContextOptionsBuilder<MySqlDemoDbContext> builder, DbConnection connection)
    {
        builder.UseMySql(connection);
    }
 }

想要在ASP.NET Core和Entity Framework Core中使用MySQL一起使用需要做一些配置和变通。

# 配置数据库连接字符串

.Web.Mvc/appsettings.json将连接字符串更改为MySQL的连接字符串. 例如:

{
  "ConnectionStrings": {
    "Default": "server=127.0.0.1;uid=root;pwd=1234;database=mysqldemodb"
  },
  ...
}

# 解决方案

为了防止 EF Core 调用 Program.BuildWebHost(),我们需要重命名 BuildWebHost。例如,把他改成 InitWebHost。 若要了解需要重命名的原因, 请检查看以下 issues:

原因 : EF Core 2.0: 设计时发生变更

解决方法 : 设计: 允许安装 IDesignTimeDbContextFactory 的 idesig-timedbcontext 模块

注意 : 如果不重命名 BuildWebHost,你将在运行时收到BuildWebHost方法执行错误。

# 创建数据库

删除 *.EntityFrameworkCore/Migrations 文件夹。 因为 Pomelo.EntityFrameworkCore.MySql 将添加一些自己的配置文件以便使用Entity Framework Core。

开始构建数据库:

  • 选择 *.Web.Mvc 作为启动项。
  • 打开 包管理器控制台, 然后选择 .EntityFrameworkCore
  • 执行 add-migration Initial_Migration 命令。
  • 执行 update-database 命令。

MySQL集成至此已经完成,你可以使用MySQL运行你的项目了。

Last Updated: 2019-11-8 14:18:07