[Entity Framework Core]1.搭建测试环境和第一个案例
5.Entity Framework Core
1.EFCore简介
ORM:Object Reletaional Mapping 让开发者用对象的形式操作关系型数据库
1.搭建EFCore开发环境
用什么数据库:
一个数据库要是想被EFCore支持,既要被EFCore支持,也需要被ADO.Net Core 支持
可以自己实现其他不被EFCore支持的数据库(造轮子的能力)
!EFCore支持所有主流的数据库
3.开发环境搭建_1
1.经典步骤:创建实体类,写配置类,建DBContext;生成数据库
2.Book.cs
long Id 主键
string Title
DateTime PubTime
double Price
3.Install-Package Microsoft.EntityFrameworkCore.SqlServer
4.开发环境搭建_2
创建实现了IEntityTypeConfiguration接口的实体配置类,配置实体类。配置实体类和数据库表的对应关系。
约定大于配置,会根据实体类的约定的规则生成表。
public class BookConfig : IEntityTypeConfiguration<Book>
{
public void Configure(EntityTypeBuilder<Book> builder)
{
builder.ToTable("T_Books");
}
}
约定大于配置,这个类可以不创建。会根据指定的规则匹配数据库中的表。
5.开发环境搭建_3
创建继承自DBContext类的
声明数据库里有哪些表
- 声明属性:DbSet
- 重写OnConfiguring,在这个方法中声明数据库链接字符串和使用哪个数据库。
- 重写OnModelCreating,指定使用哪个程序集。
- 指定了在指定程序集中实现IEntityTypeConfiguration接口的类。
public class MyDbContext : DbContext
{
//实体
public DbSet<Person> Persons { get; set; }
public DbSet<Book> Books { get; set; }
//连接哪个数据库
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlServer("Server=.;Database=demo1;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=true");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//从当前的程序集加载所有的实现了这个接口的所有类IEntityTypeConfigutation
modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
}
}
概念:Migration数据库迁移
面向对象的ORM开发中,数据库不是程序员手动创建,而是由Migration工具生成的。数据库只是盛放模型的工具而已,理想状态下,程序员不用关心数据库的操作。
根据对象的定义变化,自动更新数据库中的表,以及表结构的操作叫Migration。
迁移可以分多步(项目进化),也可以回滚。
----------------------------------我是分割线----------------------------------
6.开发环境搭建_4 Migration
1.为了使用生成数据库的工具,Nuget安装Microsoft.EntityFrameworkCore.Tool
2.执行Add-Migration InitialCreate InitialCreate是给这次Migration操作起的名,方便后续操作回滚。。。
3.Update-database :执行上一步生成的Migration代码
4.查看数据库,表建好了
7.开发环境搭建_5 修改表结构
- 项目开发中,根据需要,可能会在已有的实体中修改、新增、删除表、列等
- 想要显示Title的最大长度为50 title字段设置为不可为空,并新增一个不可为空且最大长度为20的AuthorName属性
在配置类中添加以下内容
public class BookConfig : IEntityTypeConfiguration<Book>
{
public void Configure(EntityTypeBuilder<Book> builder)
{
builder.ToTable("T_Books");
builder.Property(b => b.Title).IsRequired().HasMaxLength(50);
builder.Property(b => b.AuthorName).IsRequired().HasMaxLength(20);
}
}
执行Migration指令
Add-Migration AddBrith


浙公网安备 33010602011771号