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语句,对数据库进行指定的逻辑备份. 最简洁的形式是: ...
随机推荐
- 设计模式-单例模式(winfrom带参)
一.单例模式 就是在整个代码全局中,只有一个实例.比如Log4.NET或者窗体程序. 二.实战演练 通过字段cSOCode获取窗体,窗体只有一个且cSOCode值不同获取的窗体也不同. private ...
- git 配置远程仓库(同一个邮箱注册多个gitlab仓库)
之前配置的全局用户和邮箱,如果是多个注册账户就不能设置为全局账户 git config --global user.name "username" git config --glo ...
- 何为http?何为RPC?
RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议)他们最本质的区别,就是RPC主要工作在TCP协议 ...
- 一文解读DDD (转)
从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...
- [转]关于maven pom.xml中dependency type 为pom的应用
原文地址:http://blog.csdn.net/yao123long/article/details/49925659 dependency为什么会有type为pom,默认的值是什么?depend ...
- emacs 矩形操作
emacs 矩形操作 如果使用图形化(GUI)的eamcs,使用M-x cua-mode,很好用,但是如果不是图形化的emacs(emacs -nw)的话,矩形操作就不能使用cua-mode. 非图形 ...
- 卷积层输出feature maps尺寸的计算
默认feature maps的宽和高相等. 常规卷积 输入的feature maps尺寸为i,卷积核的尺寸为k,stride为s,padding为p,则输出的feature maps的尺寸o为 当pa ...
- 开源敏捷测试管理& 开源BUG跟踪管理软件itest(爱测试) V3.3.1小改紧急发布及正实现功能预告
v3.3.1 下载地址 :itest下载 码云源码地址 https://gitee.com/itestwork/itest 开源中国 itest项目地址 https://www.oschina. ...
- .gclient文件
//注意以.开头的文件名在linux下都是隐藏文件,需要使用ll 或者ls -all 才可以查看. .gclient文件必须有,否则会报类似下面的错误: Traceback (most recent ...
- 攻防世界pwn-Mary_Morton
题目连接 https://adworld.xctf.org.cn/media/task/attachments/532c53dce1ce4f5d88461e4c2a336468 友情连接 https: ...