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 查询语句的方法
分类:
EF/EF Core
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?