EFCore-CodeFirst-Mysql 创建ConsoleApplication 程序
1、创建一个ConsoleApplication,程序集选择.NET5.;添加对应的依赖


2、添加对应的类Student、Course、Classes
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleAppEFCoreStudy
{
public class Student
{ public int id { get; set; } public string name { get; set; } public int age { get; set; }
public int classID { get; set; } }
}
public class Classes
{
public int ID { get; set; }
public string Name { get; set; }
public string Manager { get; set; }
}
public class Course
{
public int CourseID { get; set; }
public String CourseName { get; set; } }
3、添加数据库生成类SchoolContext,继承DbContext,指定数据库及需要生成类的命名空间
public class SchoolContext:DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
//数据库连接字符串
private const string ConnectionString = "server=127.0.0.1;port=3306;database=efcorestudy;uid=root;pwd=123456;";
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
//指定数据库
optionsBuilder.UseMySQL(ConnectionString);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//指定当前类所在程序集命名空间的实体做生成操作
modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
}
}
4、(非必须),此时已经能通过命令行去生成对应的数据库表了,但是完成指定生成表的名称、字段的相关设置(比如长度、外键等)等可以添加类的映射关系
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace ConsoleAppEFCoreStudy.ModelMaps
{
public class ClassesMap : IEntityTypeConfiguration<Classes>
{
public void Configure(EntityTypeBuilder<Classes> builder)
{
//对应表
builder.ToTable("Classes");
//设置主键
builder.HasKey(b => b.ID);//设置主键属性自增
builder.Property(b => b.ID).IsRequired().ValueGeneratedOnAdd();
builder.Property(b => b.Name).IsRequired().HasMaxLength(50);
}
}
}
public void Configure(EntityTypeBuilder<Student> builder)
{
//对应表
builder.ToTable("Student");
//设置主键
builder.HasKey(b=>b.id);
//设置对应班级(会在Student生成一个外键ClassesID(类名+主键))
builder.HasOne<Classes>();
//设置主键属性自增
builder.Property(b => b.id).IsRequired().ValueGeneratedOnAdd();
builder.Property(b => b.name).IsRequired().HasMaxLength(50);
builder.Property(b => b.age).IsRequired();
builder.Property(b => b.classID).IsRequired();
}
5、以上所有的准备工作都做完了,就让我们开始初始化数据库吧。
选择工具-->NuGet包管理器--->程序包管理器控制台--->输入命令:Add-Migration init -->执行完后再输入命令: Update-Database
在项目里生成
,在代码里生成对应的表



6、后续如果有字段更新或者添加新表,取另外一个名字,执行Add-Migration updateVersion1 -->执行完后再输入命令: Update-Database即可
注意:可能会造成数据库截断

查询中IQueryable 查询语句的方法

EFCore-CodeFirst-Mysql 创建ConsoleApplication 程序的更多相关文章
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- EF6(CodeFirst)+MySql开发脱坑指南
废话 话说当年,在一个春光明媚的晌午,邂逅了迷人的丁香姑娘,从此拜倒在了她的石榴裙下,至今不能自拔,这位丁香姑娘就是ORM思想. 所谓ORM思想,我的理解就是根据一定的规则,把程序中的对象和数据库中的 ...
- CodeFirst+MySql开发
CodeFirst+MySql开发简单入门 记录一下使用Mysql进行EF Codefirst方式开发的简单过程. 0.准备工作 安装MySql,mysql-connector-net,mysql-f ...
- ASP.NET Core 3.0 WebApi 系列【2】.Net Core 3.0+ CodeFirst + MySql 实现数据的迁移
写在前面 在前一小节中,我们创建了基于RESFULL风格的服务.这个小节,尝试使用CodeFirst+MySql 的方式实现数据迁移. 一.开发环境 [1]运行环境:win10 家庭版 [2]开发工具 ...
- Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES)
MySQL创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES) ,多半是因为存在匿名用户, ...
- mysql创建自定义函数与存储过程
mysql创建自定义函数与存储过程 一 创建自定义函数 在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题 mysql ...
- Django 使用mysql 创建项目
一.安装 mysql 和 mysqlclient 1. 安装 mysql ,https://www.jianshu.com/p/07a9826898c0 2. pip3 install mysqlcl ...
- python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)
昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...
- .NetCore中EFCore for MySql整理(三)之Pomelo.EntityFrameworkCore.MySql
一.Pomelo.EntityFrameworkCore.MySql简介 Git源代码地址:https://github.com/PomeloFoundation/Pomelo.EntityFrame ...
- nodejs mysql 创建连接池
用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...
随机推荐
- CDN与云计算技术的结合:专业视角下的深度融合
本文分享自天翼云开发者社区<CDN与云计算技术的结合:专业视角下的深度融合>,作者:大利 随着信息技术的不断发展,内容分发网络(CDN)与云计算技术作为两种重要的互联网基础设施,其结合已成 ...
- MTV和MVC模式,初识模板
MTV和MVC模式,初识模板1.MTV和MVC模式:分层级进行管理 说到框架模式我们有必要简单的说下设计模式,了解下设计模式这个概念,因为有人对设计模式和框架模式的概念经常混淆 设计模式: 是一套被反 ...
- Q:浏览器不能上网,但是可以ping通外网ip,dns配置也没问题(TCP/IP 无法建立传出连接)
问题症状 每隔一段时间,浏览器不能访问外网,重启电脑又正常,重置网卡无效 可以ping通外网ip地址,可以ping通外网域名 ping不通外网端口端口 查看日志 每次出现不能上网情况时都会有至少两条T ...
- shell 变量的运算、保存硬件信息脚本
变量的数学运算 方法一:expr ##加减乘除 [root@localhost ~]# num1=10[root@localhost ~]# num2=16[root@localhost ~]# ex ...
- 还堵在高速路上吗?带你进入Scratch世界带你飞
国庆假期高速路的风景 国庆假期正式启动人从众模式,无论是高速公路还是景区,不管是去程还是回程,每一次都堪称经典. 一些网友在经历漫长的拥堵后 哭笑不得地表示 "假期都在堵车中度过了" ...
- Spring默认BeanName
先说结论: 1.XML配置和注解生成默认BeanName的机制是不同的 2.XML配置默认BeanName = 全类名 + # + 数字,如 com.anyway.p2024.service.impl ...
- [BZOJ3159] 决战 题解
个人感觉各方面难度高于<在美妙的数学王国中畅游>,也不知道是不是求导的关系,这题 \(luogu\) 难度评级还更低.不过感觉这题作完对 \(LCT\) 理解更顺畅了. 前四个操作简单,关 ...
- YASKAWA安川机器人DX100轴控制基板维修解析知识
ASKAWA安川机器人DX100轴控制基板的维修是一项复杂而精细的工作,要求具备丰富的知识和实践经验.通过与子锐机器人维修联系,希望能企业提供一些有益的参考和帮助,在面对轴板故障时能够迅速准确地找到问 ...
- ABB机器人本体维修保养方法
ABB机器人维修保养一般可以参照机器人保养手册里面的描述,这种保养一般分为两种计时方式,一两年内进行一次基础保养或者机器人运行时间不超过10000小时.在对机器人本体进行保养的时候,我们该如何操作呢? ...
- 题解:SP6517 JOCHEF - Farmer Sepp
怎么题解全是 dp?可以用笛卡尔树啊! 题目传送门. 笛卡尔树的介绍 笛卡尔树,是一种二叉搜索树,它满足如下条件: 每个节点的编号满足二叉搜索树的性质. 每个节点的权值满足小根堆或大根堆的性质. 大概 ...