当你开发一个新的应用程序的时候,你的模型频繁的变化,而每一次的数据模型的改变,将使它与数据库不同步。你通过配置EF Core,使得数据库不存在时创建数据库。每一次改变数据模型(增删改 实体类或者改变DbContextClass),可以删除数据库然后重新创建一个与数据模型相匹配的数据库,然后填充测试数据。

这种保持数据模型与数据库同步的方法能够工作得很好,然后却不适用于将应用程序发布到产品中的阶段。当应用程序在真实的产品的时候,通常产品中包含有你需要保留的数据,在模型改变的时候(比如增加一个新列),你不希望丢失任何数据。EF Core 迁移功能能够解决这个问题,它能使EF更新数据库的结构而不用重新创建一个新的数据库。

为了能够使用迁移,你可以使用 Package Manager Console(PMC)或者command-line interface(CLI 命令行)。

用于CLI的EF工具 是在 Microsoft.EnrityFrameworkCore.Tools工具包中提供,对于 vs 15.7的版本,已经默认添加到了MVC模板中的 Microsoft.AspNetCore.App 包中。不用像官方教程介绍的,需要手工添加。

 <PackageReference Include="Microsoft.AspNetCore.App" />

更改连接字符串

更改appsettings.josn文件中数据库连接字符串中的数据库名称为以前未使用的过名称。这样的改变使项目能使用 first migration 创建一个新的数据库。这并不是一个开始使用迁移必需的操作,但你会看到这是一个好主意。

另外一个方法是从SSOX(SQL Server Object Exporer SQL对象资源管理器)或CLI中删除数据库。

删除数据库的CLI命令是:dotnet ef database drop

创建初始化迁移
在解决方案管理器中,右键 项目文件夹----在弹出的菜单中选择 在文件资源管理器 中打开--------在地址栏输入cmd.

在控制台窗口中输入:dotnet ef migrations add InitialCreate

EF产生的代码会从头开始创建数据库。

会在解决方案管理器中 建立一个Migrations 文件夹,在其中,有一个同名加时间戳的cs文件。Up方法创建与数据模型实体集对应的数据库表格,down方法删除它们。

如果你创建初始化迁移的时候,数据库已经存在。创建数据库的代码依然会生成但是它不会运行,因为数据库已经与数据模型相匹配。当你发布一个应用到另外一个环境的时候,数据库不存在,此代码将会创建数据库,所以,这是一个好的主意先来测试它。

数据模型快照(Data Model snashot)

迁移创建了现有数据库结构的快照。当你增加一个迁移,通过对比数据模型和快照文件,决定改变了什么。

删除迁移的控制台命令是 dotnet ef migrations remove ,会删除迁移和保证快照 被正确的重置。

应用迁移到数据库

应用迁移更新数据库的CLI:dotnet ef database update

数据库中的EFMigrationsHistory表 会跟踪哪些迁移被应用到数据库。

原文地址:https://www.cnblogs.com/liuyuanhao/articles/9442266.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

ASP.NET Core MVC with EF Core-迁移相关推荐

  1. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (一)

    系统必备 .NET Core 2.0.0 SDK 或更高版本. 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本. 创建Web应用程序 ...

  2. ASP.NET Core MVC 和 EF Core 教程 - 创建、读取、更新和删除

    作者:Tom Dykstra 和 Rick Anderson Contoso 大学示例 web 应用程序演示如何使用 Entity Framework Core 和 Visual Studio 创建 ...

  3. 用ASP.NET Core MVC 和 EF Core 构建Web应用 (六)

    前面创建了学校数据模型. 本节将读取并显示相关数据 - 即 Entity Framework 加载到导航属性中的数据. 相关数据的预先加载.显式加载和延迟加载 对象关系映射 (ORM) 框架(如 En ...

  4. 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-2

    来个目录吧: 第一章-入门 第二章- Entity Framework Core Nuget包管理 第三章-创建.修改.删除.查询 第四章-排序.过滤.分页.分组 第五章-迁移,EF Core 的co ...

  5. mysql多租户schema复制,Asp.net core下利用EF core实现从数据实现多租户(3): 按Schema分离 附加:EF Migration 操作...

    前言 前段时间写了EF core实现多租户的文章,实现了根据数据库,数据表进行多租户数据隔离. 今天开始写按照Schema分离的文章. 其实还有一种,是通过在数据表内添加一个字段做多租户的,但是这种模 ...

  6. 用于存储过程的ASP.NET Core Blazor和EF Core原始SQL查询

    目录 介绍 背景 先决条件 使用代码 创建数据库和表 步骤1:创建ASP.NET Core Blazor服务器应用程序 运行测试应用程序 步骤2:安装软件包 连接字符串 步骤3:建立模型类 创建DBC ...

  7. Asp.net core 学习笔记 ( ef core )

    更新: 2019-06-12 不小心踩坑 var adidas = new Supplier { name = "adidas" }; Db.Suppliers.Add(adida ...

  8. ef core mysql 字符集,EF Core 基础知识

    数据库连接字符串 在 ASP.NET Core 添加配置片段: { "ConnectionStrings": { "BloggingDatabase": &qu ...

  9. EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案

    如果你使用命令: PM> add-migration Inital 提示如下信息时: The EF Core tools version '2.1.1-rtm-30846' is older t ...

最新文章

  1. 计算机应用12班,《计算机应用基础》上机试卷A(10级机电8—12班)
  2. 数据结构与算法 / 分治算法
  3. iOS开发(4)UITextField
  4. 安装VS 2008 EXPRESS出现无法读取deffactory.dat错误
  5. jrtplib 打包做了哪些事_30岁前就实现财务自由的人,都做了哪些事
  6. 省培计算机实践作业,计算机软件基础强化实践能力培养实践部分考核作业.doc...
  7. 湍流退化图像复原如何使用matlab,湍流退化图像复原技术研究现状及展望
  8. 补习系列(8)-springboot 单元测试之道
  9. hadoop.2.6.0安装hive.1.2.2
  10. 【VS Code配置matlab】手把手教学,matlab也能自动补全+瞬间启动+代码整理!
  11. linkedin客户开发_10个LinkedIn WordPress插件赢得新客户
  12. 公众号淘宝客自营商城外卖返利小程序淘宝客小程序流量主返利app
  13. order by 升序和降序排列显示
  14. 本本CPU控制让游戏3D效果最佳境界
  15. 伪装请求头伪装useragent比fake-useragent库好用的伪装请求头库: anti-useragent
  16. 实验3-11 求一元二次方程的根
  17. p5.js动态图形临摹以及拓展
  18. svn造成桌面图标显示问号的处理办法
  19. 计算机培训考试内容,计算机等级考试的科目和内容解析
  20. 微信网页版二维码扫码过程发生了什么

热门文章

  1. VR 技术加上 8K 画质! 2016 年里约奥运会亮点十足
  2. Linux安装 微信开发者工具(deepin linux ubt)
  3. exchange2013 owa-outlook界面语言
  4. 常用的加密算法---数字摘要
  5. 关于一个js栈溢出的异常
  6. LVS负载均衡-NET、DR模式配置
  7. .net 垃圾回收机制
  8. .NET6之MiniAPI(十八):OpenAPI swagger
  9. .NET6之MiniAPI(七):中间件
  10. 讲一讲应用服务的新鲜事儿