解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)

解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)

 2015/5/13 23:04:57  tonycheng93  程序员俱乐部  我要评论(0)
  • 摘要:文章转载自:http://www.cnblogs.com/amoniyibeizi/p/4486617.html前几天学MVC过程中,遇到更改Model类以后,运行程序就会出现数据已更改的问题导致调试失败,当时是因为刚开始创建MVC项目,数据库中没有什么数据,就直接用官方提供的解决方法直接删除了数据库,虽然问题是解决了,但是数据库中的测试数据全部丢失了,这几天在想有什么更好的解决方法。今天看到这位园友的帖子,能够很好的解决我的问题,转载一下学习
  • 标签:MVC 方法 解决方法 解决 数据库 失败 数据 迁移

文章转载自:http://www.cnblogs.com/amoniyibeizi/p/4486617.html

前几天学MVC过程中,遇到更改Model类以后,运行程序就会出现数据已更改的问题导致调试失败,

当时是因为刚开始创建MVC项目,数据库中没有什么数据,就直接用官方提供的解决方法直接删除了

数据库,虽然问题是解决了,但是数据库中的测试数据全部丢失了,这几天在想有什么更好的解决方法。

今天看到这位园友的帖子,能够很好的解决我的问题,转载一下学习。

在使用Code first生成数据库后

当数据库发生更改时 运行程序就会出现数据已更改的问题  这时可以删除数据库重新生成解决

但是之前的数据就无法保留  为了保留之前的数据库数据  我们需要使用到Code first数据迁移

首先如果需要更改数据结构  必须是先更改model类 然后使用Code firs数据迁移  如果直接先更改了数据库 则使用数据迁移会报错 

使用Code firs数据迁移图解

      工具--》库文件包程序管理器--》程序包管理控制台  如图

注意观察 默认项目  和程序包源  

因为只有安装了EF框架 才能使用 所以只有把 DBContext.cs 放在默认启动目录下才能使用

然而我们在项目开发时  我们并不会这么做 如果只是引用了EF 并不能达到安装EF的效果 后面会说明 可以采用如图下方法

当把DBContext.cs 放在其他目录下时 这里用Model事例

 

把默认选择为model 直接执行下面的命令会报错  这是因为此目录缺少EF5.0 我们需要安装EF5.0

执行此命令 Install-Package EntityFramework -Version 5.0.0  安装EF   次处EF以5.0版本为例  安装后Model类如下图     安装后Model类下会出现 packages.config   现在我们就可以正常的开始操作数据迁移了 首先执行命令Enable-Migrations -ContextTypeName MovieDBContext 开启Code First迁移  开启后会出现如下图   开启后程序会默认添加Migrations这个文件夹  打开 configuration.cs
 
 public Configuration()
 {
           AutomaticMigrationsEnabled = false;
 }

将AutomaticMigrationsEnabled = false; 改为AutomaticMigrationsEnabled = true; 开启自动 Code first 迁移

接下来有两种方法  第一种方法

执行命令 add-migration Initial   为迁移“Initial”搭建基架。执行后如下图

 

代码先行迁移机制在Migrations文件夹下创建另外一个类文件,文件名为时间戳+下划线+ Initial.cs,该类将被执行,创建数据库架构。随后,Seed方法将被执行,测试数据被添加其中。

然后执行命令 update-database  即可完成数据迁移。。。

第二种方法

执行命令 add-migration AddRatingMig   为迁移“AddRatingMig   ”搭建基架。执行后如下图

 

代码先行迁移机制在Migrations文件夹下创建另外一个类文件,文件名为时间戳+下划线+ AddRatingMig.cs,该类将被执行,自动比对与数据库差异,创建数据库架构。随后,Seed方法将被执行,测试数据被添加其中。

然后执行命令 update-database  即可完成数据迁移。。。

这样就实现了修改Model类后不删除数据库重建  使用Code first 迁移数据   也不用担心之前的数据会被删除了!

发表评论
用户名: 匿名