欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

efcore mysql数据库codefirst生成

程序员文章站 2023-01-13 12:38:48
添加引用 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools Pomelo.EntityFrameworkCore.MySql 创建实体对象 创建实体对象 这里创建两个实体对象,顺便演示添加外键的效果 public cl ......

添加引用

  • 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两个数据表了。