EF架构~CodeFirst生产环境的Migrations

简介:
Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境主要使用包管理工具的update-database即可完成数据库的迁移(变更),而在生产环境就显得麻烦一些,因为你不会在生产环境放程序源代码和VS开发工具,哈哈.

本地数据库迁移请看我的这篇文章

EF架构~CodeFirst数据迁移与防数据库删除

服务器上生产环境的数据迁移

如果我们有迁移文件如下

复制代码
public partial class manager : DbMigration
    {
        /// <summary>
        /// 要在升级过程中执行的操作。
        /// </summary>
        public override void Up()
        {
            DropForeignKey("dbo.WebDataSettings", "WebDataCtrlId", "dbo.WebDataCtrls");
            DropForeignKey("dbo.WebDataSettings", "DepartmentId", "dbo.WebDepartments");
            RenameColumn(table: "dbo.WebDataSettings", name: "DepartmentId", newName: "WebDepartmentsId");
            RenameIndex(table: "dbo.WebDataSettings", name: "IX_DepartmentId", newName: "IX_WebDepartmentsId");
            AddForeignKey("dbo.WebDataSettings", "WebDataCtrlId", "dbo.WebDataCtrls", "ID", cascadeDelete: true);
            AddForeignKey("dbo.WebDataSettings", "WebDepartmentsId", "dbo.WebDepartments", "ID", cascadeDelete: true);
        }

        /// <summary>
        /// 要在降级过程中执行的操作。
        /// </summary>
        public override void Down()
        {
            DropForeignKey("dbo.WebDataSettings", "WebDepartmentsId", "dbo.WebDepartments");
            DropForeignKey("dbo.WebDataSettings", "WebDataCtrlId", "dbo.WebDataCtrls");
            RenameIndex(table: "dbo.WebDataSettings", name: "IX_WebDepartmentsId", newName: "IX_DepartmentId");
            RenameColumn(table: "dbo.WebDataSettings", name: "WebDepartmentsId", newName: "DepartmentId");
            AddForeignKey("dbo.WebDataSettings", "DepartmentId", "dbo.WebDepartments", "ID");
            AddForeignKey("dbo.WebDataSettings", "WebDataCtrlId", "dbo.WebDataCtrls", "ID");
        }
    }
复制代码
在本地VS中执行下面命令,它将生产迁移计划,即SQL语句

Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration:manage

它将生成对应的SQL脚本,我们在服务器上运行即可

幂等性

由Migration生成的SQL脚本是幂等的,即,当你多次执行SQL脚本时,产生的结果是一样的,不对有负作用.
本文转自博客园张占岭(仓储大叔)的博客,原文链接: EF架构~CodeFirst生产环境的Migrations,如需转载请自行联系原博主。
目录
相关文章
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
消息中间件 SQL 关系型数据库
flink cdc生产环境的高可用部署架构图?
flink cdc生产环境的高可用部署架构图?
748 1
|
存储 弹性计算 监控
通俗易懂的生产环境Web应用架构介绍
在我职业生涯的早期,我曾在一家工作内容为构建Web内容管理系统的公司工作。他们的产品帮助营销部门可以自己管理网站的内容,而不是依靠开发人员来管理网站。该产品帮助他们的客户降低了运营成本,并帮助我学习如何构建Web应用程序。 虽然产品本身有一个非常普通的用途,但其客户缺倾向于使用它来解决非常特殊的问题。这些问题以各种眼花缭乱的方式将对产品的要求推到了极限,并且要求该产品必须提供解决方案。在这种环境中工作了十多年,让我对生产环境下的Web应用程序有了全面的了解,其中一些我们将在本文中讨论。
490 0
|
缓存 运维 监控
生产环境下真实Redis选型架构方案
生产环境下真实Redis选型架构方案
848 0
生产环境下真实Redis选型架构方案
|
SQL 机器学习/深度学习 Cloud Native
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记
- 状态 - 自动变更检测 - 不查询删除和更新 - 并发
427 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记
|
SQL Cloud Native 架构师
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记
- 关联数据加载 - 客户端与服务端运算 - 跟踪与不跟踪 - 复杂查询运算 - 原生 SQL 查询 - 全局查询筛选器
477 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 查询)--学习笔记
|
Cloud Native 架构师
|
存储 开发框架 Cloud Native
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记
- 连接字符串 - 异步编程 - 日志 - DbContext池 - 类和配置表 - 属性和列配置 - 并发token - 索引
498 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记
|
SQL Cloud Native 架构师
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记
- ORM - Repository 仓储 - UnitOfWork 工作单元 - DB Context 与 DB Set - EF Core快速开始示例
519 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记