Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
ASP.NET-Core-MVC替换默认的Sqlite为Mysql
2017-06-03
.NET Core
Mysql
Docker
目前 .NET Core 版本的 Mysql provider主要有2个: * MySql.Data.EntityFrameworkCore * Pomelo.EntityFrameworkCore.MySql 实际使用中发现 MySql.Data.EntityFrameworkCore 还存在一些问题,比如 identity 字段无法自动生成等,所以这里推荐使用 Pomelo.EntityFrameworkCore.MySql # 引入依赖包 用 Nuget 安装依赖包:Pomelo.EntityFrameworkCore.MySql 或者直接修改 项目文件,添加: <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="1.1.2"/> # 配置DBContext 打开 Startup.cs 文件,修改为: ```c# services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection")) ); ``` # 修改连接字符串 打开 appsettings.json,修改为: "DefaultConnection": "Server=;Database=;uid=;pwd=" # 使用 Mysql Docker 镜像 如果使用 Mysql 的Docker镜像来提供服务,可以利用docker-compose编排文件来实现: docker-compose.mysql.yml ```yml version: '2' services: mysql: image: mysql:5.7.17 volumes: - /data/web/mysql:/var/lib/mysql - ./mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD= ``` # 注意事项 如果项目已经用 sqlite 或者 其他的 provider 生成了 migrations 并更新了数据库,再调整为新的provider时,如果直接替换可能会出错,原因是因为不同的 provider 对于自增长等字段的描述方式不同,比如 Pomelo.EntityFrameworkCore.MySql 对于自增长字段的描述方式如下: ```c# Id = table.Column<int>(nullable: false) .Annotation("MySql:ValueGeneratedOnAdd", true), ``` 此时如果要更换provider,还要一并替换 migrations 中自动生成的代码。
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表