zoukankan      html  css  js  c++  java
  • efcore mysql数据库codefirst生成

    添加引用

    • Microsoft.EntityFrameworkCore
    • Microsoft.EntityFrameworkCore.Tools
    • Pomelo.EntityFrameworkCore.MySql

    创建实体对象

    这里创建两个实体对象,顺便演示添加外键的效果 

    public class TUser
    {
        public int ID { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public ICollection<TRole> TRoles { get; set; }
    }
    public class TRole
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }

    生成数据表时,属性“ID”默认成为自增的主键。

    上述两个实体对象生成的数据表中,TRole中会包含TUser的外键,默认命名为TUserID。

    创建上下文对象

    public class MyDbContext:DbContext
    {
        public MyDbContext(DbContextOptions<MyDbContext> options)
             : base(options)
        {
        } 
    
        public DbSet<TUser> Users { get; set; }
        public DbSet<TRole> Roles { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);     
        }
    }           

    将根据此文件生成数据库,把想要生成数据表的实体类型以上面代码的形式作为属性MyDbContext为自定义的数据库上下文名称,由用户自己起名。其他代码可保持不变。

    添加数据库连接字符串

    在appsettings.json中加入连接字符串(下方绿底部分):

    {
      "Logging": {
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "AllowedHosts": "*",
      "ConnectionStrings": {
        "MyDbContext": "server=localhost;database=MyDb;user=myUsername;password=myPwd;"
      }
    }

    localhost替换为你的mysql地址,MyDb为将要生成数据表的数据库名称,myUsername为mysql的用户名,myPwd为mysql的密码。

    添加数据上下文服务

    在StartUp类的ConfigureServices方法中添加如下代码

    services.AddDbContext<MyDbContext>(options => 
        options.UseMySql(Configuration.GetConnectionString("MyDbContext")));

    此代码将上面我们编写的MyDbContext这个类注册为数据上下文的服务,后续可通过DI方便地调用。Configuration.GetConnectionString(string name)获取appsettings.json中“ConnectionStrings”这部分中对应名称的字符串。

    生成数据库

    用vs2019的话,直接菜单栏“工具”-NuGet包管理器-程序包管理器控制台。

    在打开的窗口中输入如下两个命令

    • Add-Migration InitialCreate
    • Update-Database

    第一个命令会生成一个文件,记录所有我们代码编写对数据库的影响,生成的文件自动放入Migrations文件夹下,此文件夹也自动生成,第一个命令中的“Initial Create”用来命名此次数据库操作,可自己起名。

    第二个命令将会根据第一个命令生成的迁移文件对数据库进行操作。

    完成

    此时,mysql数据库中应该就可以看到TUser和TRole两个数据表了。

  • 相关阅读:
    log4j2配置ThresholdFilter,让info文件记录error日志
    Thrift常见异常及原因分析(<i>UPDATING...</i>)
    fastjson序列化出现StackOverflowError
    mysql执行update语句受影响行数是0
    远程Gitlab新建的分支在IDEA里不显示
    rabbitmq延迟队列demo
    利用延迟消息队列取代定时任务
    利用spring实现服务启动就自动执行某些操作的2种方式
    从Joda-Time反观Java语言利弊
    Linux Shell test判断
  • 原文地址:https://www.cnblogs.com/zhaochenxi/p/11758141.html
Copyright © 2011-2022 走看看