zoukankan      html  css  js  c++  java
  • 图文详解 解决 MVC4 Code First 数据迁移

    在使用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 迁移数据   也不用担心之前的数据会被删除了!

  • 相关阅读:
    《一网打尽》:贝佐斯粗暴刻薄,商业战略上的几次成功决策造了今天的亚马逊
    《信息简史》:计算机史前史
    《孵化Twitter》:Twitter创始人勾心斗角史,细节披露程度令人吃惊
    《走出电商困局》:与《我看电商》有不少重复,反复强调电商要重视成本
    转贴健康资讯:感冒了,是因为着凉吗?
    《众病之王》:人类探索癌症诊断治疗的历史
    转发健康资讯:寒冷会导致关节炎吗?
    《淘宝十年产品事》淘宝产品演进史及作者的思考
    [React] How to use a setState Updater Function with a Reducer Pattern
    [HTML5] Text Alternatives
  • 原文地址:https://www.cnblogs.com/amoniyibeizi/p/4486617.html
Copyright © 2011-2022 走看看