添加引用

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

efcore mysql数据库codefirst生成的更多相关文章

  1. EF初始化mysql数据库codefirst

    EF使用Code First修改生成数据库表名的方法 1. 重写OnModelCreating,去掉表名复数 System.Data.Entity.ModelConfiguration.Convent ...

  2. Entity Framework连接Mysql数据库并生成Model和DAL层

    Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...

  3. javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  4. javaweb(三十七)——获得MySQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  5. 五.获得MYSQL数据库自动生成的主键

    测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...

  6. efcore从数据库快速生成实体及context

    有些项目开发时先建立数据库,再用codefirst来书写entity和EntityConfiguration,比较耗费功夫. 1.在vs2017中新建个asp.net core的web项目,或者其他项 ...

  7. MySQL数据库(4)----生成统计信息

    MySQL最有用的一项功能就是,能够对大量原始数据进行归纳统计. 1.在一组值里把各个唯一的值找出来,这是一项典型的统计工作,可以使用DISTINCT 关键字清楚查询结果里重复出现的行.例如,下面的查 ...

  8. MySQL数据库操作生成UUID

    问题描述: 通过数据库操作,生成无横线的uuid,同时插入至数据库之中. 因为我要给项目做一些测试数据,项目的主键为32位无'-'的uuid,然后在数据库中,通过数据库操作,然后插入一些测试数据. 生 ...

  9. linux 定时备份mysql数据库

    首先要先搞清楚两个概念: ①.mysqldump,mysqldump是mysql的逻辑备份工具,它不是linux的命令,工作原理类似产生一些列sql语句,对数据库进行指定的逻辑备份. 最简洁的形式是: ...

随机推荐

  1. java基础(9):类、封装

    1. 面向对象 1.1 理解什么是面向过程.面向对象 面向过程与面向对象都是我们编程中,编写程序的一种思维方式. 面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程. 例 ...

  2. 在python中实现随机选择

    想从一个序列中随机抽取若干元素,或者想生成几个随机数. random 模块有大量的函数用来产生随机数和随机选择元素.比如,要想从一个序列中随机的抽取一个元素,可以使用random.choice() : ...

  3. 你不知道的JS第一卷

    这两天,开始看你不知道的JavaScript,第一卷.

  4. Java 包的使用

    Java 包 Java面向对象的核心的概念:类.接口.抽象类.对象:[主体] 包的定义: 指的是一个程序的目录,在最早的时候,如果要开发一个程序,只需要定义一个Java文件,而后在这个文件中编写所需要 ...

  5. 「SAP技术」SAP MM 事务代码ME17的用法

    SAP MM 事务代码ME17的用法 1,如下采购信息记录需要被归档: PIR号码,5300007816   2, ME12打上删除标记,   3, 事务代码ME17做归档 3.1 创建archive ...

  6. 利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API

    微软动态CRM专家罗勇 ,回复337或者20190521可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 配置Dynamics 365 & PowerApps 支 ...

  7. Dynamics CRM 中Web API中的深度创建(Deep Insert)

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. MySQL 主从复制开启 GTID

    GTID (Golobal Transaction ID) 是对于一个已提交事务的唯一编号,并且是一个全局(主从复制)唯一的编号. GTID 复制和传统复制的区别:在启动主从复制时,不需要指定 bin ...

  9. [视频教程] 配置mysql用户的权限并查询数据

    MySQL安装后,需要允许外部IP访问数据库.修改加密配置与增加新用户,配置用户权限修改配置文件,增加默认加密方式的配置项. 当连接数据库的时候会报验证方法不存在的错误,这是因为新版本mysql的加密 ...

  10. eclipse的“sun.misc.BASE64Encoder”问题解决

    新建一个AndroidHello工程,编译运行,出现问题如下: 编辑/Applications/Eclipse.app/Contents/Eclipse/eclipse.ini文件,加入 -vm /L ...