[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类的

声明数据库里有哪些表

  1. 声明属性:DbSet
  2. 重写OnConfiguring,在这个方法中声明数据库链接字符串和使用哪个数据库。
  3. 重写OnModelCreating,指定使用哪个程序集。
    1. 指定了在指定程序集中实现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 修改表结构

  1. 项目开发中,根据需要,可能会在已有的实体中修改、新增、删除表、列等
  2. 想要显示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

posted @ 2023-10-05 23:29  贾博文  阅读(65)  评论(0)    收藏  举报