Entity Framework Core 3.1 入门(二)创建数据库和迁移(Migration)文件

此入门教程是记录下方参考资料视频的过程,本例基于Entity Framework Core 3.1
开发工具:Visual Studio 2019

参考资料:https://www.bilibili.com/video/BV1xa4y1v7rR

目录

Entity Framework Core 3.1 入门(一)创建项目

Entity Framework Core 3.1 入门(二)创建数据库和迁移(Migration)文件

Entity Framework Core 3.1 入门(三)一对一、多对多

Entity Framework Core 3.1 入门(四)增删改查

Entity Framework Core 3.1 入门(五)关联数据的添加和查询

Entity Framework Core 3.1 入门(六)一对一和多对多关系的增删改查

Entity Framework Core 3.1 入门(七)执行原生SQL语句

Entity Framework Core 3.1 入门(八)在 ASP.NET Core 中配置 Entity Framework Core

创建数据库

  1. 通过 Entity Framework Core 生成数据库,主要依靠迁移文件(Migration),Migration 文件对源码的版本控制友好
  2. EF Core 生成数据库或数据迁移,必须有可执行文件,依靠 Demo.Data 是不行的,需要 Demo.App 项目

创建 Migration 文件

  1. Demo.Data 使用 NuGet 添加需要的库
      Visual Studio:Microsoft.EntityFrameworkCore.Tools
      控制台或 Visual Studio Code:Microsoft.EntityFrameworkCore.Design
    其实 Tools 就包含了 Design,本例中还需要将 Design 这个包添加到 Demo.App 的依赖项中

  2. 工具 》NuGet 包管理器 》程序包管理器控制台(package manager console)

  或者在 Visual Studio 最上方搜索 程序包管理器控制台(package manager console)
  

  1. 进入程序包管理器控制台,默认项目改成 Demo.Data (DbContext 所在的项目)

Migration 常用命令(使用时命令不区分大小写)

  1. 显示命令:get-help entityframework
  2. 添加迁移文件:Add-Migration
  3. 把迁移应用到数据库:Update-Database
    Update-Database -verbose:可以查看执行过程中的明细
  4. 生成当前迁移需要的数据库脚本:Script-Migration

生成 Migration 文件和应用到数据库

  1. 使用【 Add-Migration + 文件名 】的方式生成 Migration 文件
    会在 Demo.Data 项目下生成 Migrations 文件夹,存放生成的 Migration 文件,生成的 Migration 文件名由【时间戳 + Migration文件名】
    还会生成一份快照文件 Snapshot,每次创建 Migration 文件都会根据快照文件进行比较,再针对需要修改的部分生成新的 Migration 文件
      Migration 类有两个方法:Up() 和 Down()
        Up():将需要执行的SQL脚本以事务的形式提交到数据库
        Down():当Up()执行出现错误,以事务回滚的形式,整体回滚

  2. Update-Database,应用 Migration 文件到数据库

设定字段属性

  1. Demo.Domain 项目使用 NuGet 安装 System.ComponentModel.Annotations
    就可以对属性使用标识,例如,我们对上次的实体模型进行修改
public class League
{
      public int Id { get; set; }

      [Required]
      [MaxLength(50)]
      public string Name { get; set; }

      //也可以写在同一行里
      [Required,MaxLength(100)]
      public string Country { get; set; }
}

public class Club
{
      public Club()
      {
          this.Players = new List<Player>();
      }

      public int Id { get; set; }
      public string Name { get; set; }
      public string City { get; set; }

      //成立日期,指定类型
      [Column(TypeName = "date")]
      public DateTime DateOfEstablishment { get; set; }
      //比较长的描述性文字
      public string History { get; set; }

      public League League { get; set; }
      public List<Player> Players { get; set; }
  }

修改完代码,需要生成新的 Migration 文件,并且同步数据库

创建数据库和迁移(Migration)文件 结束

如果有机会就再写一篇 EF Core 通过数据库生成实体模型(Model)代码

posted @ 2021-02-02 16:55  .NET好耶  阅读(757)  评论(0编辑  收藏  举报