EF core连接数据库完整流程-开发环境搭建
前置:.net6 core webapi不勾选任何配置
声明:这里是以两个配置类来做的,一个T_Books表,一个T_Person表
Book:创建属性及类型
BookConfig:对创建的进行属性数据表的配置,及数据类型控制(相当于在数据库建表的过程)
MyDbContext:与数据库相连接,操作数据库(实现表的建立)
程序包管理控制台执行语句:
Add-Migration Init
Update-Database
Remove-Migration
1.建实体类
Book实体类
namespace WebApplication13
{public class Book{public long Id { get; set; }public string Title { get; set; }public DateTime PubTime { get; set; }public double Price { get; set; }}
}
Person实体类
namespace WebApplication13
{public class Person{public int Id { get; set; }public string Name { get; set; }public int Age { get; set; }}
}
-----------
2.建配置类
Book配置类
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;namespace WebApplication13
{//作用:按照代码建数据库类,对应那一个表对应public class BookConfig:IEntityTypeConfiguration<Book>//接口{public void Configure(EntityTypeBuilder<Book> builder){builder.ToTable("T_Books");}}
}
Person配置类
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;namespace WebApplication13
{public class PersonConfig : IEntityTypeConfiguration<Person>{public void Configure(EntityTypeBuilder<Person> builder){builder.ToTable("T_Persons");}}
}
---------
Context配置类:与数据库产生联系
MyDbContext:连接数据库及加载前面的配置
using Microsoft.EntityFrameworkCore;namespace WebApplication13
{public class MyDbContext:DbContext{public DbSet<Book> Books { get; set; }public DbSet<Person> Persons { get; set; }protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){base.OnConfiguring(optionsBuilder);optionsBuilder.UseSqlServer("Server=.; Database=Todo; uid = sa; pwd = 123456; Trusted_Connection = False;");//连接字符串}protected override void OnModelCreating(ModelBuilder modelBuilder){//从指定的程序集里面加载IEntityTypeConfiguration内容this.GetType()base.OnModelCreating(modelBuilder);modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);}}
}
3.生成数据库
工具根据配置的实体类来生成数据库,多步生成,可以回滚
需要安装:
Microsoft.EntityFrameworkCore.Tools
未安装成功执行下面的命令会报这个错误
执行:Add-Migration Init
作用:Add-Migration生成一次迁移
执行:Update-Database
作用:将生成的表同步到数据库
3.1追加属性
执行:Add-Migration AddBrith
可以查看追加的内容
执行:Update-Database
同步更新
4.设置表字段的属性
字段的数据类型改变,可能会导致数据库里已有的数据截断
拓展:
不建立配置类实现实体-数据库表
提示:关闭再打开才能看见新的变化
总结
日常开发的时候建实体类-配置-DbContext-Add-Migration AddBrith-Update Database 哦了
完整代码地址:https://gitee.com/bigcat_li/EFcore