EF Core CodeFirst数据库自动迁移
开发过程中都会遇到数据库数据结构更新的问题,怎么对数据库更新进行版本控制呢?
不同的项目对数据库版本更新控制的方式不同,常用的有第三方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数据库自动迁移的更多相关文章
- EF的CodeFirst模式自动迁移(适用于开发环境)
EF的CodeFirst模式自动迁移(适用于开发环境) 1.开启EF数据迁移功能 NuGet包管理器------>程序包管理控制台---------->Enable-Migrations ...
- .Net Core建站(2):EF Core+CodeFirst数据库迁移
上一篇的话,说了下怎么使用EF7 实现 CodeFirst去生成数据库, 其实还有好多问题的,这次一点一点的解决吧,都挺简单,不过零零散散的,, 1.读取配置文件,获得链接字符串 2.使用数据库进行增 ...
- .Net Core建站(1):EF Core+CodeFirst数据库生成
emmm,本来想着用Core做一个小项目玩玩的,然后肯定是要用到数据库的, 然后想,啊,要不用CodeFirst,感觉很腻害的样子,于是,一脸天真无邪的我就踏入了一个深不见底的天坑... 本来想着,应 ...
- 谈谈EF Core实现数据库迁移
作为程序员,在日常开发中,记忆犹新的莫过于写代码,升级程序.升级程序包含两部分:一是,对服务程序更新:二是,对数据库结构更新.本篇博文主要介绍数据库结构更新,在对数据库升级时,不知道园友们是否有如下经 ...
- 使用EF Core+CodeFirst建立ASP.NET Core MVC项目
本篇随笔介绍如何使用.NET Core+EF Core创建Web应用程序 首先借用官网的话简单介绍一下ASP.NET Core ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且 ...
- EF Core 数据变更自动审计设计
EF Core 数据变更自动审计设计 Intro 有的时候我们需要知道每个数据表的变更记录以便做一些数据审计,数据恢复以及数据同步等之类的事情, EF 自带了对象追踪,使得我们可以很方便的做一些审计工 ...
- EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?
场景描述:项目中存在两个迁移 Teacher 和 TeachingPlan ,TeachingPlan 在 Teacher 之后创建,并且已经执行 dotnet ef database update ...
- EF Core CodeFirst实践 ( 使用MS SqlServer)
这里使用 MS SQLSERVER ,网上大多使用 SQLite 先来一个CodeFirst 新建项目 这里我们选择 ASP.NET Core Web Application (.NET Core) ...
- ASP.NET CORE 使用 EF CORE访问数据库
asp.net core通过ef core来访问数据库,这里用的是代码优先,通过迁移来同步数据库与模型. 环境:vs2017,win10,asp.net core 2.1 一.从建立asp.net c ...
随机推荐
- Flask学习 url和视图
因为扫描器的准备使用Flask框架,所以开始恶补Flask和前后端的知识 Flask是一个使用Python编写的轻量级Web应用框架,作者是 Armin Ronacher(他也是 Werkzeug 及 ...
- linux常用快捷键总结
启动器:<super> 显示桌面:<super>D 文件管理器:<super>E 显示工作区:<super>S 打开终端:ctrl+alt+T 关闭窗口 ...
- LeetCode初级算法之数组:1 两数之和
两数之和 题目地址:https://leetcode-cn.com/problems/two-sum/ 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整 ...
- Jmeter(三十三) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy6(详解教程)
1.简介 今天分享的就是在上一篇文章的基础上来进行讲解和分享:Badboy使用数据源Excel进行脚本参数化.然后在使用读取的参数进行对比断言. 2.具体场景 Badboy录制一个搜索的脚本,并对搜索 ...
- 从隔壁兄弟那爬点网页数据,整理成word文档
package com.parse_report; import com.report.utils.ParseUrl; /** * Create by JIUN 2018/7/14 */ public ...
- 终于不再对transition和animation,傻傻分不清楚了 --vue中使用transition和animation
以前写页面注重在功能上,对于transition和animation是只闻其声,不见其人,对于页面动画效果心理一直痒痒的.最近做活动页面,要求页面比较酷炫,终于有机会认真了解了. transition ...
- Jmeter(2)基础知识
一.Jmeter测试计划 1.测试计划用来描述一个性能/接口测试的脚本和场景设计 独立运行每个线程组:用于控制测试计划中的多个线程组的执行顺序.不勾选时,默认各线程组并行.随机执行. 主线程结束后运行 ...
- sqli-labs less-7(文件读写)
less-7 dump into outfile(文件读写) 通俗的来讲,就是通过outfile传入一句话木马到网站目录里,然后用菜刀或者蚁剑等连接 过程: 输入id=?判断闭合类型 页面上提示了使用 ...
- HTTPS和HTTP的那些事
随着信息安全变得越来越重要,在浏览器.搜索引擎.CA机构.大型互联网企业的共同促进下,互联网迎来了"HTTPS加密时代".HTTPS在HTTP上建立了SSL加密层,是HTTP协议的 ...
- 基于Python PIL实现简单图片格式转化器
基于Python PIL实现简单图片格式转化器 目录 基于Python PIL实现简单图片格式转化器 1.简介 2.前期资料准备 2.1.1如何实现图片格式转换? 2.1.2如何保存需要大小的图片? ...