MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)

以下内容默认已安装好MySQL,作者的MySql版本是8.0.27,目前的最新版
作者是枚菜鸟,所以该文章小白也能看懂
这是当前时间

MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第1张图片

 个人猜测MySQL似乎还不支持.Net 6(下面会说原因)

  1. 新建.Net 5项目,这一过程就不演示了,我这边新建了.Net 5 Web Api项目和一个类库项目,Web API继承了swagger,类库项目是领域模型Domain(之后会新建一个Model类库项目,用来和Domain做映射)MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第2张图片
  2. 安装Nuget包,一定要注意版本
    MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第3张图片MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第4张图片
    Domain:MySql.EntityFrameworkCore(5.0.8)提供MySQL服务接口,支持MySQL8.0.27
    Api:Microsoft.EntityFrameworkCore.Tools(5.0.13)用于支持程序包管理控制台输出
  3. Domain 中新建数据库上下文类,并继承DbContext,数据库连接字符串照这样写就行,不过不推荐使用root账号!DataBase和Password记得修改
    using Microsoft.EntityFrameworkCore;
    
    namespace Domain
    {
        public class YourNameDbContext : DbContext
        {
            public CNASDbContext(DbContextOptions 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);
            }
        }
    }
  4. Domain中新建一个实体类,然后修改上下文YourNameContext的代码
        public class Person
        {
            /// 
            /// 姓名
            /// 
            [MaxLength(32)]
            [Key]
            public string Id { get; set; }
    
            /// 
            /// 姓名
            /// 
            [MaxLength(32)]
            public string Name { get; set; }
    
            /// 
            /// 年龄
            /// 
            public int Age { get; set; }
    
            /// 
            /// 住址
            /// 
            public string Address { get; set; }
        }
    using Microsoft.EntityFrameworkCore;
    
    namespace Domain
    {
        public class YourNameDbContext : DbContext
        {
            public CNASDbContext(DbContextOptions 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 { get; set; }
        }
    }
  5. 在Api项目的StartUp(ConfigureServices方法)中添加,这步很重要!
    services.AddDbContext();
  6. 将Api项目设置为启动项目(项目【鼠标右键】-设为启动项目)
  7. 打开程序包管理器控制台,默认项目设置为Domain,然后输入Add-Migration v1.0.0(v1.0.0 是版本号,下面会说明作用)
    MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第5张图片
  8. 这时候Domin项目会生成一个Migrations文件夹
    MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第6张图片
  9. 接着在程序包管理器控制台中输入Update-Database v1.0.0(v1.0.0是版本号,会自动还原数据库到指定版本,如果不需要则直接输入Update-Database,不带版本号)
    MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第7张图片
    看起来大功告成了,咱们去瞅瞅数据库
  10. MySQL踩坑日志——.Net 5 连接 MySQL数据库(EF Core Code First)_第8张图片

如果实体模型有改动或者新增了实体模型,只需要先输出Add-Migration然后Update-Database

以上结束 

说一下不用.Net 6的原因:在Add-Migration这一步时,我这边是报错了,Microsoft.EntityFrameworkCore中没有实现 'Addxxxx'的方法,具体名字不太记得了

当然也有可能是我的代码哪里有问题,我这边把.Net版本降下来就一切正常,欢迎各位大佬留言指正

你可能感兴趣的:(程序进阶,mysql,数据库,.net)