ASP.NET Boilerplate(简称ABP)是.Net平台下一个很流行的DDD框架,该框架已经为我们提供了大量的函数,非常方便与搭建企业应用。官方文档:http://www.aspnetboilerplate.com/Pages/Documents
ABP+EF+SQL Server是比较推荐的组合,由于使用的是EF,那么也就意味着我们可以采用其他的数据库,比如MySQL、MariaDB
操作步骤:
Download Starter Template 下载开始模板
Download the starter template with ASP.NET Core and Entity Framework Core to integrate MySQL. Multi-page template with ASP.NET Core 2.x + .NET Core Framework + Authentication will be explained in this document.
下载 ASP.NET Core 和 Entity Framework Core 的模板用于集成 MySQL。这里使用的是多页面模板 ASP.NET Core 2.x + .NET Core Framework
Getting Started 开始
There are two Entity Framework Core providers for MySQL that are mentioned in the Micrososft Docs. One of them is the Official MySQL EF Core Database Provider and the other is Pomelo EF Core Database Provider for MySQL.
NOTE: The official provider doesn’t support EF Core 2.0 just yet, so the Pomelo EF Core Database Provider will be used in this example, instead.
Related issue: https://github.com/aspnet/EntityFrameworkCore/issues/10065#issuecomment-336495475
微软文档里提到了两个MySQL的Entity Framework Core类库。一个是官方的MySql.Data.EntityFrameworkCore,另一个是Pomelo EF Core Database Provider for MySQL。
注:由于官方的目前还不支持EF Core 2.0 ,所以本例中使用的是 Pomelo EF Core Database Provider for MySQL 。相关问题的讨论:https://github.com/aspnet/EntityFrameworkCore/issues/10065#issuecomment-336495475
Install 安装
Install the Pomelo.EntityFrameworkCore.MySql NuGet package to the *.EntityFrameworkCore project.
为 *.EntityFrameworkCore 项目 安装 NuGet 包 : Pomelo.EntityFrameworkCore.MySql
Configuration 配置
Configure DbContext 配置 DbContext
Replace YourProjectNameDbContextConfigurer.cs with the following lines
使用如下代码 替换文件 YourProjectNameDbContextConfigurer.cs 内容
public static class MySqlDemoDbContextConfigurer { //CopyRight codebye.com public static void Configure(DbContextOptionsBuilder<MySqlDemoDbContext> builder, string connectionString) { builder.UseMySql(connectionString); } //CopyRight codebye.com public static void Configure(DbContextOptionsBuilder<MySqlDemoDbContext> builder, DbConnection connection) { builder.UseMySql(connection); } }
Some configuration and workarounds are needed to use MySQL with ASP.NET Core and Entity Framework Core.
一些配置和工作环境 需要使用 MySQL
Configure connection string 配置连接字符串
Change the connection string to your MySQL connection in *.Web.Mvc/appsettings.json. Example:
修改 *.Web.Mvc/appsettings.json 文件中的连接字符串,使用MySQL连接字符串。例如:
{ "ConnectionStrings": { "Default": "server=codebye.com;uid=root;pwd=codebye.com;database=codebyedb" }, CopyRight codebye.com ... }
A workaround
To prevent EF Core from calling Program.BuildWebHost() rename BuildWebHost. For example, change it to InitWebHost. To understand why it needs to be renamed, check the following issues:
为了阻止 EF Core 调用 Program.BuildWebHost() ,需要重命名 BuildWebHost 。例如,改为 InitWebHost 。关于为何需要重命名,可以查看下面的问题讨论:
Reason : EF Core 2.0: design-time DbContext discovery changes
Workaround : Design: Allow IDesignTimeDbContextFactory to short-circuit service provider creation
NOTE : If you don’t rename BuildWebHost, you’ll get an error running BuildWebHost method.
Create Database 创建数据库
Remove all migration classes under *.EntityFrameworkCore/Migrations folder. Because Pomelo.EntityFrameworkCore.MySql will add some of its own configurations to work with Entity Framework Core.
Now it’s ready to build the database.
- Select *.Web.Mvc as the startup project.
- Open Package Manager Console and select the *.EntityFrameworkCore project.
- Run the add-migration Initial_Migration command
- Run the update-database command
删除*.EntityFrameworkCore/Migrations 文件夹下的所有迁移文件。因为 Pomelo.EntityFrameworkCore.MySql 将添加它自己的配置。
现在已经准备好构建数据库。
- 将 *.Web.Mvc 设置为启动项目
- 打开 程序包管理器控制台 ,选择 *.EntityFrameworkCore 项目。
- 执行 命令 add-migration Initial_Migration
- 运行 update-database 命令
The MySQL integration is now complete. You can now run your project with MySQL.
到这里,MySQL集成已经完成。你可以在MySQL环境下运行你的项目了。CodeBye 原创,转载请注明链接出处。谢谢。