zoukankan      html  css  js  c++  java
  • 解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)

    文章转载自: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 迁移数据   也不用担心之前的数据会被删除了!

  • 相关阅读:
    Android学习八---OpenCV JAVA API
    Android学习七---Hello OpenCV samples
    Android学习六---OpenCV for android samples
    android学习五---OpenCV for android环境搭建
    android学习四---Activity和Intent
    Servlet总结(Zpoor,你还说你不会Servlet?)
    Eclipse使用小技巧
    Java-List(冷静分析,稍加思索,识破)
    JDBC——setting useSSL=false, or set useSSL=true
    Java-foreach分析总结
  • 原文地址:https://www.cnblogs.com/tonycheng93/p/4501774.html
Copyright © 2011-2022 走看看