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

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

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

  1. 新建.Net 5项目,这一过程就不演示了,我这边新建了.Net 5 Web Api项目和一个类库项目,Web API继承了swagger,类库项目是领域模型Domain(之后会新建一个Model类库项目,用来和Domain做映射)
  2. 安装Nuget包,一定要注意版本

    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<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);
            }
        }
    }
  4. 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; }
        }
    }
  5. 在Api项目的StartUp(ConfigureServices方法)中添加,这步很重要!
    services.AddDbContext<CNASDbContext>();
  6. 将Api项目设置为启动项目(项目【鼠标右键】-设为启动项目)
  7. 打开程序包管理器控制台,默认项目设置为Domain,然后输入Add-Migration v1.0.0(v1.0.0 是版本号,下面会说明作用)
  8. 这时候Domin项目会生成一个Migrations文件夹
  9. 接着在程序包管理器控制台中输入Update-Database v1.0.0(v1.0.0是版本号,会自动还原数据库到指定版本,如果不需要则直接输入Update-Database,不带版本号)

    看起来大功告成了,咱们去瞅瞅数据库

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

以上结束 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值