ASP.NET的EF Core迁移怎么实现

发布时间:2021-12-06 14:20:07 作者:iii
来源:亿速云 阅读:190

这篇文章主要介绍“ASP.NET的EF Core迁移怎么实现”,在日常操作中,相信很多人在ASP.NET的EF Core迁移怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET的EF Core迁移怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

当你开发一个新的应用程序的时候,你的模型频繁的变化,而每一次的数据模型的改变,将使它与数据库不同步。你通过配置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表 会跟踪哪些迁移被应用到数据库。

到此,关于“ASP.NET的EF Core迁移怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. ASP.NET Core开发之HttpContext
  2. .net EF Core专题:EF Core 读取数据是如何运行的

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

asp.net ef core

上一篇:大数据中创建云硬盘失败的解决过程是怎样的

下一篇:mac中Hyperledger fabric多通道多节点增删改查的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》