EFCore三(EFCore迁移生成数据表)

目录

一 上一章回顾

二 Migration概述

三 Migration流程

四 更新数据库

五 成果展示

六 更新数据库

七 步骤总结

八 总结

九 下章预告


一 上一章回顾

一 上一章回顾

二 EFCore概述

三 Nuget包配置

四 建立数据模型和数据表

1 新建Steel实体类

2 新建SteelContext

五 总结

六 下章预告


Migration概述

  1. 面向对象的ORM开发中,数据库并不需要程序员手动创建,而是根据实体类的定义变化更新,自动更新数据库中的表以及表结构的操作,叫作Migration(迁移)。

Migration流程

程序包管理器控制台→选择默认项目为建立实体类的项目→执行数据库迁移指令(PM> Add-Migration Steel),(InitialCreate:当前的migration的名字,可随意命名) 

Add-migration作用:根据实体类及配置生成操作数据库的迁移代码,执行成功后项目中会多出一个migration文件夹,示例图中因为已经生成过该文件夹了,所以显示已经存在

其中这个Migration时间+迁移操作名的CS文件中,即包含根据实体类及配置生成操作数据库的迁移代码

创建的Steeel实体类生成的数据库迁移代码如下所示:

public partial class Steel : Migration
{
    /// <inheritdoc />
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Steel",
            columns: table => new
            {
                ID = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
                SG = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
                Len = table.Column<int>(type: "int", maxLength: 5, nullable: false),
                Wid = table.Column<int>(type: "int", maxLength: 5, nullable: false),
                Thk = table.Column<int>(type: "int", maxLength: 5, nullable: false),
                Pos = table.Column<int>(type: "int", maxLength: 5, nullable: false)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Steel", x => x.ID);
            });
    }

    /// <inheritdoc />
    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropTable(
            name: "Steel");
    }
}

四 更新数据库

程序包管理器控制台→执行Update-Database更新数据库命令后,创建数据库的迁移代码才会执行,此时在数据库中自动生成对应数据表。

PS:在更新数据库的过程中,可能有部分同学会遇到和我一样的问题,提示“证书链是由不受信任的颁发机构颁发的”,需要在SteelContext类配置连接字符串处,额外添加TrustServerCertificate=true授权信任服务器证书即可,如下图所示


五 成果展示

执行成功后我们发现此时数据库中已经生成了我们创建的Steel数据表

并且还生成了一个EFMigrationHistory表,里面主要记录我们的迁移历史和EFCore具体版本


六 更新数据库

当需要修改数据库内容时 ,只需要修改相关实体类的内容,再次执行迁移指令Add-migration InitialCreate以及更新指令Update-Database即可,但是此时迁移指令的命名应当采用不同的名字。


七 步骤总结

创建数据表的步骤如下所示:创建实体类Steel→创建DBContext类→执行Add-Migration数据库迁移命令→执行Update-Database更新数据库命令→在数据库中生成实体类对应数据表


八 总结

以上我给大家介绍了ORM框架的概念、ORM框架解析、流程结构以及ORM与传统SQL对比等内容,我们从中可以发现ORM框架明显行之有效的提高了开发者体验,提高了可读性和可维护性,但由于多加了一层抽象,不可避免的降低了部分性能。在实现生产环境,需要根据实际的项目需求来进行抉择。


九 下章预告

下一章我会教大家


博主RaymondLeigh:如果您觉得本文为您提供了结局思路或解决了您的实际问题,麻烦您🙏帮忙点赞、收藏、评论、关注一键四连,您的举手之劳将为我写作提供动力源泉!🤞

print('Hello,RaymondLeigh!')  # 每日问候,跟大家问好!

🔥精品框架专栏:Prism专栏 WPF专栏 


🌞精品前端UI设计专栏:MaterialDesign专栏


💾精品后端数据库专栏:SqlServer专栏 EFCore专栏


💻精品程序开发专栏  VisualStudio专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值