Entity Framework Core 3.1 入门(二)创建数据库和迁移(Migration)文件
此入门教程是记录下方参考资料视频的过程,本例基于Entity Framework Core 3.1
开发工具:Visual Studio 2019
目录
Entity Framework Core 3.1 入门(八)在 ASP.NET Core 中配置 Entity Framework Core
创建数据库
- 通过 Entity Framework Core 生成数据库,主要依靠迁移文件(Migration),Migration 文件对源码的版本控制友好
- EF Core 生成数据库或数据迁移,必须有可执行文件,依靠 Demo.Data 是不行的,需要 Demo.App 项目
创建 Migration 文件
-
Demo.Data 使用 NuGet 添加需要的库
Visual Studio:Microsoft.EntityFrameworkCore.Tools
控制台或 Visual Studio Code:Microsoft.EntityFrameworkCore.Design
其实 Tools 就包含了 Design,本例中还需要将 Design 这个包添加到 Demo.App 的依赖项中 -
工具 》NuGet 包管理器 》程序包管理器控制台(package manager console)
或者在 Visual Studio 最上方搜索 程序包管理器控制台(package manager console)
- 进入程序包管理器控制台,默认项目改成 Demo.Data (DbContext 所在的项目)
Migration 常用命令(使用时命令不区分大小写)
- 显示命令:get-help entityframework
- 添加迁移文件:Add-Migration
- 把迁移应用到数据库:Update-Database
Update-Database -verbose:可以查看执行过程中的明细 - 生成当前迁移需要的数据库脚本:Script-Migration
生成 Migration 文件和应用到数据库
-
使用【 Add-Migration + 文件名 】的方式生成 Migration 文件
会在 Demo.Data 项目下生成 Migrations 文件夹,存放生成的 Migration 文件,生成的 Migration 文件名由【时间戳 + Migration文件名】
还会生成一份快照文件 Snapshot,每次创建 Migration 文件都会根据快照文件进行比较,再针对需要修改的部分生成新的 Migration 文件
Migration 类有两个方法:Up() 和 Down()
Up():将需要执行的SQL脚本以事务的形式提交到数据库
Down():当Up()执行出现错误,以事务回滚的形式,整体回滚 -
Update-Database,应用 Migration 文件到数据库
设定字段属性
- 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)代码