开发过程中都会遇到数据库数据结构更新的问题,怎么对数据库更新进行版本控制呢?

不同的项目对数据库版本更新控制的方式不同,常用的有第三方Evolve,开发人员将数据库更新脚本按照版本号的放在一起,然后执行命令进行数据库更新。在之前EF的博客中也有介绍到数据库迁移的内容,一般在本地开发时只需要执行Add-Migration [Name]和Update-Database [Name]就能实现对本地数据库的更新。昨天突然想到一个问题,如果项目发布到线上了,而线上的数据库开发人员在本地又不能直接连接,还没办法直接使用上面的两个命令完成数据库的更新。于是百度了好久,网上也有好几种解决方案。这里我使用自动更新的方式。主要方法为:EF core code first字段更新后执行Add-Migration [Name],然后执行MigrateAsync()方法即可完成。

一、更新实体Model

在UserEntity中新增一个TestId字段用来测试。

        [Display(Name = "TestId")]
public int TestId { get; set; }

二、在程序包管理器控制台输入命令Add-Migration [Name]

Add-Migration userTestId

三、创建DbInitializer.cs

如果在本地开发环境,可以直接执行Update-Database userTestId命令实现本地数据库的更新,但这里为了演示自动更新,需要创建DbInitializer.cs类。

    public class DbInitializer
{
public async Task InitializeAsync(RentContext context)
{
//var migrations = await context.Database.GetPendingMigrationsAsync();//获取未应用的Migrations,不必要,MigrateAsync方法会自动处理
await context.Database.MigrateAsync();//根据Migrations修改/创建数据库
}
}

四、Startup.cs中调用上面DbInitializer的更新方法

1.首先注入数据库上下文

        public void ConfigureContainer(ContainerBuilder builder)
{
builder.RegisterType<RentContext>();
builder.RegisterModule<ConfigureAutofac>();
}

2.然后在Configure方法添加数据库上下文参数RentContext context

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env, RentContext context)

3.在Configure方法执行下面的语句进行数据库更新

new DbInitializer().InitializeAsync(context).Wait();

五、启动项目运行即可看到数据库中新增的测试字段TestId

此处并未执行Update-Database userTestId命令,运行项目依然可以看到TestId字段。

六、总结

使用自动更新只需要在实体model有更新时执行Add-Migration 命令,在Migrations文件夹下新增增量变更文件,运行项目即可更新数据库,对线上数据库更新也很方便。好久没写了,新的一年也在博客园打下卡,其次是键盘进水了,写这篇博客想测试下新键盘是否好用。^_^ ^_^

EF Core CodeFirst数据库自动迁移的更多相关文章

  1. EF的CodeFirst模式自动迁移(适用于开发环境)

    EF的CodeFirst模式自动迁移(适用于开发环境) 1.开启EF数据迁移功能 NuGet包管理器------>程序包管理控制台---------->Enable-Migrations ...

  2. .Net Core建站(2):EF Core+CodeFirst数据库迁移

    上一篇的话,说了下怎么使用EF7 实现 CodeFirst去生成数据库, 其实还有好多问题的,这次一点一点的解决吧,都挺简单,不过零零散散的,, 1.读取配置文件,获得链接字符串 2.使用数据库进行增 ...

  3. .Net Core建站(1):EF Core+CodeFirst数据库生成

    emmm,本来想着用Core做一个小项目玩玩的,然后肯定是要用到数据库的, 然后想,啊,要不用CodeFirst,感觉很腻害的样子,于是,一脸天真无邪的我就踏入了一个深不见底的天坑... 本来想着,应 ...

  4. 谈谈EF Core实现数据库迁移

    作为程序员,在日常开发中,记忆犹新的莫过于写代码,升级程序.升级程序包含两部分:一是,对服务程序更新:二是,对数据库结构更新.本篇博文主要介绍数据库结构更新,在对数据库升级时,不知道园友们是否有如下经 ...

  5. 使用EF Core+CodeFirst建立ASP.NET Core MVC项目

    本篇随笔介绍如何使用.NET Core+EF Core创建Web应用程序 首先借用官网的话简单介绍一下ASP.NET Core ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且 ...

  6. EF Core 数据变更自动审计设计

    EF Core 数据变更自动审计设计 Intro 有的时候我们需要知道每个数据表的变更记录以便做一些数据审计,数据恢复以及数据同步等之类的事情, EF 自带了对象追踪,使得我们可以很方便的做一些审计工 ...

  7. EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?

    场景描述:项目中存在两个迁移 Teacher 和 TeachingPlan ,TeachingPlan 在 Teacher 之后创建,并且已经执行 dotnet ef database update ...

  8. EF Core CodeFirst实践 ( 使用MS SqlServer)

    这里使用 MS SQLSERVER ,网上大多使用 SQLite 先来一个CodeFirst 新建项目 这里我们选择  ASP.NET Core Web Application (.NET Core) ...

  9. ASP.NET CORE 使用 EF CORE访问数据库

    asp.net core通过ef core来访问数据库,这里用的是代码优先,通过迁移来同步数据库与模型. 环境:vs2017,win10,asp.net core 2.1 一.从建立asp.net c ...

随机推荐

  1. Linux 服务分类

    一,服务分类 1,服务简介与分类 1,服务的分类 启动与自启动 1,服务启动:就是在当前系统中让服务运行,并提供功能 2,服务自启动:自启动是指让服务在系统开机或重启动之后,随着系统的启动而自动启动的 ...

  2. windows+jenkins+iis 部署

    1.安装jenkins 下载地址:https://www.jenkins.io/download/ 2.需要配置java环境 配置教程:https://www.cnblogs.com/liuxiaoj ...

  3. Day7 【Scrum 冲刺博客】

    每日会议总结 昨天已完成的工作 方晓莹(PIPIYIng) 对接车位管理接口 处理对接接口遇到的bug和错误 方子茵(Laa-L) 暂无 黄芯悦(Sheaxx) 完成住户车位查询页面 完成住户物业报修 ...

  4. 题解 CF1375E Inversion SwapSort

    蒟蒻语 这题是真的奇妙... 想了好久才想明白. 蒟蒻解 考虑冒泡排序是怎样的. 对于相邻的两个数 \(a_i, a_{i+1}\),如果 \(a_i>a_{i+1}\) 那么就交换两个数. 总 ...

  5. MySQL技术内幕InnoDB存储引擎(三)——文件相关

    构成MySQL数据库和InnoDB存储引擎表的文件类型有: 参数文件:MySQL实例运行时需要的参数就是存储在这里. 日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件. socket文件 ...

  6. Fabric v2.0中的隐私数据

    文章来源于https://hyperledger-fabric.readthedocs.io/en/release-2.0/ 私有数据集在v1.4中提出,一直使用的是隐私数据集方式,即建立一个隐私数据 ...

  7. JavaSE04-Switch&循环语句

    1.Switch 格式: 1 switch (表达式) { 2 case 1: 3 语句体1; 4 break; 5 case 2: 6 语句体2; 7 break; 8 ... 9 default: ...

  8. ElasticSearch中head插件的简单用法

    1.首先在左侧打开Query栏. 2.Query下方的第一栏是分别输入es的地址.端口号.index.type. 3.Query下方的第二栏是输入将要执行的方式,旁边的下拉框是辅助选择执行的类型,如图 ...

  9. react第十七单元(redux和组件之间的通信,react-redux的相关api的用法)

    第十七单元(redux和组件之间的通信,react-redux的相关api的用法) #课程目标 什么是redux-redux react-redux的作用是什么 react-redux如何应用 #知识 ...

  10. 2020 史上最全IDEA插件总结

    最喜欢的一句话: 1.01的365次方=37.78343433289 >>>1 0.99的365次方= 0.02551796445229, 每天进步一点点的目标,贵在坚持 IDEA ...