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两个数据表了。
efcore mysql数据库codefirst生成的更多相关文章
- EF初始化mysql数据库codefirst
EF使用Code First修改生成数据库表名的方法 1. 重写OnModelCreating,去掉表名复数 System.Data.Entity.ModelConfiguration.Convent ...
- Entity Framework连接Mysql数据库并生成Model和DAL层
Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架.相比于LINQ TO SQL,EF框架具有很明显的优势: EF框架 ...
- javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...
- javaweb(三十七)——获得MySQL数据库自动生成的主键
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...
- 五.获得MYSQL数据库自动生成的主键
测试脚本如下: 1 create table test1 2 ( 3 id int primary key auto_increment, 4 name varchar(20) 5 ); 测试代码: ...
- efcore从数据库快速生成实体及context
有些项目开发时先建立数据库,再用codefirst来书写entity和EntityConfiguration,比较耗费功夫. 1.在vs2017中新建个asp.net core的web项目,或者其他项 ...
- MySQL数据库(4)----生成统计信息
MySQL最有用的一项功能就是,能够对大量原始数据进行归纳统计. 1.在一组值里把各个唯一的值找出来,这是一项典型的统计工作,可以使用DISTINCT 关键字清楚查询结果里重复出现的行.例如,下面的查 ...
- MySQL数据库操作生成UUID
问题描述: 通过数据库操作,生成无横线的uuid,同时插入至数据库之中. 因为我要给项目做一些测试数据,项目的主键为32位无'-'的uuid,然后在数据库中,通过数据库操作,然后插入一些测试数据. 生 ...
- linux 定时备份mysql数据库
首先要先搞清楚两个概念: ①.mysqldump,mysqldump是mysql的逻辑备份工具,它不是linux的命令,工作原理类似产生一些列sql语句,对数据库进行指定的逻辑备份. 最简洁的形式是: ...
随机推荐
- python基础(8):基本数据类型三(dict)、is和==、编码和解码
1. 字典 1.1 字典的介绍 字典(dict)是python中唯一的一个映射数据类型,它是以{}括起来的键值对组成.在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将k ...
- PHP+Mysql查询上一篇和下一篇文章实例
简单的PHP+Mysql查询上一篇和下一篇文章实例,并输出上一篇和下一篇文章的标题和链接,适合新手学习 获取当前浏览文章id: $id = isset($_GET['id']) > 0 ? in ...
- E203 itcm
E203 itcm是64Kb,所以地址总线为16位,2^16=64Kb, 数据线宽度为64 bits(8 bytes),所以address width是16-3=13bit,ram depth 是2^ ...
- 【转载】Android 的 Handler 机制实现原理分析
handler在安卓开发中是必须掌握的技术,但是很多人都是停留在使用阶段.使用起来很简单,就两个步骤,在主线程重写handler的handleMessage( )方法,在工作线程发送消息.但是,有没有 ...
- Flutter学习笔记(1)--环境安装
flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...
- DevOps 工程师成长日记系列一:必备知识与技能组合
原文地址:https://medium.com/@devfire/how-to-become-a-devops-engineer-in-six-months-or-less-366097df7737 ...
- STL关联容器的基本操作
关联容器 map,set map map是一种关联式容器包含 键/值 key/value 相当于python中的字典不允许有重复的keymap 无重复,有序 Map是STL的一个关联容器,它提供一对一 ...
- matplotlib画3D图修改X,Y,Z,colorbar的刻度值
修改X,Y,Z轴的刻度值 from matplotlib.ticker import MultipleLocator,FuncFormatter from mpl_toolkits.mplot3d i ...
- 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝
第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...
- golang 服务端和客户端(二)
1.golang服务端 package main import( "net/http" ) func main(){ //注册处理函数,用户连接,自动调用指定的处理函数 http. ...