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 程序的更多相关文章

  1. 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 ...

  2. EF6(CodeFirst)+MySql开发脱坑指南

    废话 话说当年,在一个春光明媚的晌午,邂逅了迷人的丁香姑娘,从此拜倒在了她的石榴裙下,至今不能自拔,这位丁香姑娘就是ORM思想. 所谓ORM思想,我的理解就是根据一定的规则,把程序中的对象和数据库中的 ...

  3. CodeFirst+MySql开发

    CodeFirst+MySql开发简单入门 记录一下使用Mysql进行EF Codefirst方式开发的简单过程. 0.准备工作 安装MySql,mysql-connector-net,mysql-f ...

  4. ASP.NET Core 3.0 WebApi 系列【2】.Net Core 3.0+ CodeFirst + MySql 实现数据的迁移

    写在前面 在前一小节中,我们创建了基于RESFULL风格的服务.这个小节,尝试使用CodeFirst+MySql 的方式实现数据迁移. 一.开发环境 [1]运行环境:win10 家庭版 [2]开发工具 ...

  5. Mysql创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES)

    MySQL创建新用户后无法登录,提示 Access denied for user 'username'@'localhost' (using password: YES) ,多半是因为存在匿名用户, ...

  6. mysql创建自定义函数与存储过程

    mysql创建自定义函数与存储过程 一 创建自定义函数 在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题 mysql ...

  7. Django 使用mysql 创建项目

    一.安装 mysql 和 mysqlclient 1. 安装 mysql ,https://www.jianshu.com/p/07a9826898c0 2. pip3 install mysqlcl ...

  8. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)

    昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...

  9. .NetCore中EFCore for MySql整理(三)之Pomelo.EntityFrameworkCore.MySql

    一.Pomelo.EntityFrameworkCore.MySql简介 Git源代码地址:https://github.com/PomeloFoundation/Pomelo.EntityFrame ...

  10. nodejs mysql 创建连接池

    用Nodejs连接MySQL 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javas ...

随机推荐

  1. 载誉而归!天翼云荣获第23届中国IT用户满意度大会多项殊荣

    10月25日,2024第23届中国IT用户满意度大会暨首届工业产品满意度交流会在北京举行.现场揭晓"2024中国IT用户满意度征集结果",天翼云凭借领先的产品技术.完善的客户服务以 ...

  2. Q:以非root用户编辑定时任务报错You are not allowed to use this program(crontab)

    编辑定时删除文件任务时报错 crontab -e 编辑定时任务时报错,如下图所示 问题原因:/etc/cron.allow中没有添加对应的用户名解决办法:切换到root用户,在/etc/cron.al ...

  3. vue-element-admin改为从后台获取菜单

    一.修改文件\src\router\index.js 文件的asyncRoutes清理为 export const asyncRoutes = [ { path: '*', redirect: '/4 ...

  4. [爬坑指南] 虚拟机和docker实现下载服务器

    现在需要挂梯子下载一批资源,然而我的梯子装在路由器中,openclash只能配置指定的某个设备不走梯子.所以索性就装个虚拟机专门用来下载东西,挂bt.如果需要走梯子,就单独在这个下载机中配置一个廉价梯 ...

  5. HTTP协议与RESTful API实战手册(二):用披萨店故事说透API设计奥秘 🍕

    title: HTTP协议与RESTful API实战手册(二):用披萨店故事说透API设计奥秘 date: 2025/2/27 updated: 2025/2/27 author: cmdragon ...

  6. 让 LLM 来评判 | 设计你自己的评估 prompt

    设计你自己的评估 prompt 这是 让 LLM 来评判 系列文章的第三篇,敬请关注系列文章: 基础概念 选择 LLM 评估模型 设计你自己的评估 prompt 评估你的评估结果 奖励模型相关内容 技 ...

  7. PHP中处理html相关函数集锦

    1.html_entity_decode() 函数把 HTML 实体转换为字符. Html_entity_decode() 是 htmlentities() 的反函数. 例子: <?Php $s ...

  8. Linux 防火墙及开放端口管理

    查看防火墙是否开启systemctl status firewalld 若没有开启则是开启状态systemctl start firewalld  关闭则start改为stop 查看所有开启的端口fi ...

  9. Flask快速入门2

    六,Flask HTTP方法 Http协议是万维网中数据通信的基础.在该协议中定义了从指定URL检索数据的不同方法. 下表总结了不同的http方法: 序号 方法 描述 1 GET 以未加密的形式将数据 ...

  10. msvcp110.dll丢失修复 按我的方法来,保证修复!

    方法很简单,msvcp110.dll丢失,安装Microsoft Visual C++ 2012 Redistributable Package就可以,我把修复程序的链接放下面.链接地址: 链接:ht ...