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