C#+EntityFramework编程方式详细之Code First 数据迁移
2021-06-06 11:02
标签:测试 支持 cep efi 就会 ros 解决 程序 方式 在前几篇的C#+EntityFramework编程方式中介绍了C#+EntityFramework编程方式Code First ,Model First以及Dtatabase First 等编程方式,其中Model First以及Dtatabase First中,如果实体类(Model First)或者数据库(Dtatabase First)变化了,那么就需要数据库(Model First)或者实体类(Dtatabase First)来相应的变化,以保持实体类(Model First)和数据库(Dtatabase First)的表结构保持一致,Model First以及Dtatabase First这种实体类(Model First)和数据库(Dtatabase First)中的表结构保持一致比较好做,只要修改实体类(Model First)或者和数据库(Dtatabase First)中的表结构(表以及字段的修改),最后更新一下就好了,更新只要在在ADO.NET的 模型设计视图中,(如果是Model First)空白处右键选择 根据模型生成数据库(G)..,如果是Dtatabase First,从数据库更新模型(U)..)即可,这样就会更新数据库表结构和实体类,如下图所示: 然而在C#+EntityFramework编程方式详细之Code First 中如果我们修改类实体类的话,重新运行的话就会报错(错误信息: InvalidOperationException,指出“创建数据库后,支持‘xxContext’上下文的模型已发生变化。请考虑使用 Code First 迁移更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)”),错误的原因是因为我们已经根据实体类生成数据库了,这时修改实体类的话再去操作生成数据库的就会报错了,那么我们要如何做呢,其实解决这种Code First 中修改类实体类,更新数据库的问题很简单,那就是需要进行数据迁移 所谓的数据迁移,其实就是使用 Code First 迁移改进应用程序的数据库架构,生成迁移以跟踪对 EF 模型所做的更改。 实体框架中的 Code First 迁移包括生成初始模型和数据库,启用迁移,生成和运行迁移,信息如果有兴趣的话可以阅读 Code First 迁移 而本文介绍的是Code First 迁移,是在实体类变化以后,来重新更新数据库,为了与上篇的Code First加以区分,这里新建一个控制台程序EFDemoDBModelEFTestEmptyCodeFirst,然后添加新建项,选择 ADO.NET实体数据模型,名称输入EFTestCodeFirstEmpty,
点击 添加 选择 空Code First模型,点击 完成。默认生成如下 为了演示方便,我们直接使用默认的的实体类 MyEntity(把上面MyEntity以及DbSet注释的放开) 添加测试代码生成数据库(数据库本文是默认的,可以在app.config配置文件中修改) 测试代码: 运行结果如下,在localdb的mssqllocaldb实例中生成数据库EFTestCodeFirstEmpty.MyEmptyModel 那么现在数据库已经生成,我们就来修改一下实体,然后在运行看看会有什么问题啊 再运行一下(如下),看看错误信息,这错误信息就是 InvalidOperationException,指出“创建数据库后,支持‘xxContext’上下文的模型已发生变化。请考虑使用 Code First 迁移更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)”),错误的原因是因为我们已经根据实体类生成数据库了,这时修改实体类的话再去操作生成数据库的就会报错了,那么我们要如何做呢,其实解决这种Code First 中修改类实体类,更新数据库的问题很简单,那就是需要进行数据迁移 下面为了解决这个问题,我们来进行下面操作也就是数据迁移 首先找到vs工具栏中的 工具 选择NuGet包管理器 选择 程序包管理器控制台 , 在vs的下面就会添加 程序包管理器控制台,如下
在vs的下面的程序包管理器控制台 里面 选择需要处理的 项目 本文是选择 EFTestCodeFirstEmpty 1、在包管理器控制台中运行 Enable-Migrations 命令 此命令已将“迁移”文件夹添加到项目中。 此新文件夹包含两个文件: 包管理器控制台中运行 Enable-Migrations 命令 结果如下
2、Add-Migration 将基于自上次迁移创建以来对模型所做的更改来构建下一次迁移 在包管理器控制台中运行 Add-Migration 命令 结果如下 3、Update-Database 将对数据库应用任意挂起的迁移 在包管理器控制台中运行 Update-Database 命令 结果如下
以上就就是C#+EntityFramework 中Code First 修改实体类来更新数据库的全部操作,其实总结起来很简单,只要第一次根据实体类生成过数据库,之后又有需要修改类实体类(添加字段,标识,限制等),那么只要在包管理器控制台中运行三个命令 即可根据修改的实体类来更新数据库。 三个命令如下 注解: Enable-Migrations 命令已将“迁移”文件夹添加到项目中。 此新文件夹包含两个文件: Add-Migration 将基于自上次迁移创建以来对模型所做的更改来构建下一次迁移 Update-Database 将对数据库应用任意挂起的迁移 C#+EntityFramework编程方式详细之Code First 数据迁移 标签:测试 支持 cep efi 就会 ros 解决 程序 方式 原文地址:https://www.cnblogs.com/1175429393wljblog/p/10778277.html
文章标题:C#+EntityFramework编程方式详细之Code First 数据迁移
文章链接:http://soscw.com/index.php/essay/91240.html