以下内容默认已安装好MySQL,作者的MySql版本是8.0.27,目前的最新版
作者是枚菜鸟,所以该文章小白也能看懂
这是当前时间
个人猜测MySQL似乎还不支持.Net 6(下面会说原因)
- 新建.Net 5项目,这一过程就不演示了,我这边新建了.Net 5 Web Api项目和一个类库项目,Web API继承了swagger,类库项目是领域模型Domain(之后会新建一个Model类库项目,用来和Domain做映射)
- 安装Nuget包,一定要注意版本
Domain:MySql.EntityFrameworkCore(5.0.8)提供MySQL服务接口,支持MySQL8.0.27
Api:Microsoft.EntityFrameworkCore.Tools(5.0.13)用于支持程序包管理控制台输出 - Domain 中新建数据库上下文类,并继承DbContext,数据库连接字符串照这样写就行,不过不推荐使用root账号!DataBase和Password记得修改
using Microsoft.EntityFrameworkCore; namespace Domain { public class YourNameDbContext : DbContext { public CNASDbContext(DbContextOptions<YourNameDbContext> options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL("Data Source=localhost;Database=CNAS;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;"); base.OnConfiguring(optionsBuilder); } } }
- Domain中新建一个实体类,然后修改上下文YourNameContext的代码
public class Person { /// <summary> /// 姓名 /// </summary> [MaxLength(32)] [Key] public string Id { get; set; } /// <summary> /// 姓名 /// </summary> [MaxLength(32)] public string Name { get; set; } /// <summary> /// 年龄 /// </summary> public int Age { get; set; } /// <summary> /// 住址 /// </summary> public string Address { get; set; } }
using Microsoft.EntityFrameworkCore; namespace Domain { public class YourNameDbContext : DbContext { public CNASDbContext(DbContextOptions<YourNameDbContext> options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL("Data Source=localhost;Database=CNAS;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;"); base.OnConfiguring(optionsBuilder); } public DbSet<Person> Person { get; set; } } }
- 在Api项目的StartUp(ConfigureServices方法)中添加,这步很重要!
services.AddDbContext<CNASDbContext>();
- 将Api项目设置为启动项目(项目【鼠标右键】-设为启动项目)
- 打开程序包管理器控制台,默认项目设置为Domain,然后输入Add-Migration v1.0.0(v1.0.0 是版本号,下面会说明作用)
- 这时候Domin项目会生成一个Migrations文件夹
- 接着在程序包管理器控制台中输入Update-Database v1.0.0(v1.0.0是版本号,会自动还原数据库到指定版本,如果不需要则直接输入Update-Database,不带版本号)
看起来大功告成了,咱们去瞅瞅数据库
如果实体模型有改动或者新增了实体模型,只需要先输出Add-Migration然后Update-Database
以上结束
说一下不用.Net 6的原因:在Add-Migration这一步时,我这边是报错了,Microsoft.EntityFrameworkCore中没有实现 'Addxxxx'的方法,具体名字不太记得了
当然也有可能是我的代码哪里有问题,我这边把.Net版本降下来就一切正常,欢迎各位大佬留言指正