EF架构~codeFirst从初始化到数据库迁移

简介:

一些介绍

CodeFirst是EntityFrameworks的一种开发模式,即代码优先,它以业务代码为主,通过代码来生成数据库,并且加上migration的强大数据表比对功能来生成数据库版本,让程序开发人员不用维护数据库的变更,而直接维护migration即可,在它里面有你当前版本和过去历史版本的所有变更记录!

大叔写过的Migration的文章

第六十回 EF架构~CodeFirst生产环境的Migrations

第六十二回 EF架构~Migration数据迁移的执行顺序

开始今天的《一步一步带您进行Migration数据库版本控制的学习之旅》

(1)通过EF-CodeFirst自己帮我们建立了数据库,初始化的数据表

第一次建立数据模型,运行程序,自动建立数据库和数据表,并执行对应的初始化工作

数据模型

数据初始化

EF在LindAgile里的注册

数据库第一次被创建,数据表名的名称,可以控制它的单数和复数形式

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // 注意表单复数形式时,实体不能有下划线,必须是单词
       modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
}

其中__MigrationHistory表,它是数据变更的数据表,体现了数据库的历史

(2)开始数据迁移

这时,我们看解决方案里,没有migrations文件夹,因为这时你没有开启变更计划

当开启变更后,才会出现这个文件夹

 Enable-Migrations

然后在项目中就看到了migrations文件夹,它将存储我们数据库的变更记录

 我们如果新添加了数据实体DO,或者修改了原来的实体,然后希望升级一个变更记录,可以使用add-migration 变更名(随便写)

然后在我们项目的Migrations目录会多一个变更文件,它以时间戳开头,我们在变更执行时,这个时间戳是它顺序执行的关键

(3)把模型的变更更新到数据库

同时,我们看一个数据表__MigrationHistory,它没有发生变化,这是因为我们没有把变更更新到数据库,如果希望更新到数据库,可以使用update-database来实现,如果不加版本号,默认更新的是最新的变更记录,它会包括之前的变更代码,在更新时它会与数据表__MigrationHistory里的变更记录进行对比,如果已经更新过了,就不会执行这个版本,而只会向后更新!

执行完成后,我们再看一下数据表的变化,它也会多一条最新的变更记录,以后我们再有数据表变更,就使用这个方法即可,EF-migration只要我们好好用,它只会使我们的开发便得更快捷!

(4)把模型的变更成SQL脚本,以便在生产环境中使用

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

上面代码执行后会生成一个SQL文件,我们拿这个文件可以到生产环境中去执行,就完成了数据库的更新!

希望本文对各位有所帮助!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:EF架构~codeFirst从初始化到数据库迁移,如需转载请自行联系原博主。

目录
相关文章
|
3月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
3月前
|
设计模式 缓存 关系型数据库
探索微服务架构中的数据库设计挑战
微服务架构因其模块化和高扩展性被广泛应用于现代软件开发。然而,这种架构模式也带来了数据库设计上的独特挑战。本文探讨了在微服务架构中实现数据库设计时面临的问题,如数据一致性、服务间的数据共享和分布式事务处理。通过分析实际案例和提出解决方案,旨在为开发人员提供有效的数据库设计策略,以应对微服务架构下的复杂性。
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
1月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
26天前
|
存储 NoSQL 分布式数据库
微服务架构下的数据库设计与优化策略####
本文深入探讨了在微服务架构下,如何进行高效的数据库设计与优化,以确保系统的可扩展性、低延迟与高并发处理能力。不同于传统单一数据库模式,微服务架构要求更细粒度的服务划分,这对数据库设计提出了新的挑战。本文将从数据库分片、复制、事务管理及性能调优等方面阐述最佳实践,旨在为开发者提供一套系统性的解决方案框架。 ####
|
26天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
27天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
29天前
|
消息中间件 数据库 云计算
微服务架构下的数据库事务管理策略####
在微服务架构中,传统的单体应用被拆分为多个独立的服务单元,每个服务维护自己的数据库实例。这种设计提高了系统的可扩展性和灵活性,但同时也带来了分布式环境下事务管理的复杂性。本文探讨了微服务架构下数据库事务的挑战,并深入分析了几种主流的事务管理策略,包括Saga模式、两阶段提交(2PC)以及基于消息的最终一致性方案,旨在为开发者提供一套适应不同业务场景的事务处理框架。 ####
|
29天前
|
设计模式 存储 缓存
微服务架构下的数据库设计策略
本文探讨了在微服务架构中进行数据库设计时,如何平衡数据的一致性、独立性与系统整体性能之间的关系。文章首先介绍了微服务架构的基本概念及其对数据库设计的影响,随后深入分析了三种主流的数据库设计模式——集中式、去中心化和混合模式,并结合实际案例讨论了它们的适用场景与优缺点。此外,还提出了一系列最佳实践建议,旨在帮助开发者更好地应对微服务环境下的数据管理挑战。
|
2月前
|
数据库连接 数据库 数据安全/隐私保护
网站初始化数据库错误
网站初始化数据库错误