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 查询语句的方法