解决 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


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 迁移数据 也不用担心之前的数据会被删除了!
解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)的更多相关文章
- 图文详解 解决 MVC4 Code First 数据迁移
在使用Code first生成数据库后 当数据库发生更改时 运行程序就会出现数据已更改的问题 这时可以删除数据库重新生成解决 但是之前的数据就无法保留 为了保留之前的数据库数据 我们需要使用到C ...
- EF Code First 数据迁移配置
这里我想讲清楚code first 数据迁移的两种模式,还有开发环境和生产环境数据迁移的最佳实践. 1.1 数据迁移综述 EF Code first 虽然已经有了几种不同的数据库初始化策略,但是大部分 ...
- Code First 数据迁移 转
一.为模型更改设置 Code First 数据迁移 1.工具—>库程序包管理器—>程序包管理器控制台—>输入“Enable-Migrations” 或者 Enable-Migrat ...
- 架设传奇时打开DBC数据库出错或读取DBC失败解决方法
架设传奇时打开DBC数据库出错或读取DBC失败解决方法 DBC右键-属性-高级-管理员身份运行 即可
- MVC code first数据迁移 转
coptto:http://www.cnblogs.com/miro/p/4164076.html 本篇是相对独立的一篇,主要讲解不丢失数据进行数据库结构升级. 前面我们讲解EF功能时(见第三篇文章) ...
- C#+EntityFramework编程方式详细之Code First 数据迁移
在前几篇的C#+EntityFramework编程方式中介绍了C#+EntityFramework编程方式Code First ,Model First以及Dtatabase First 等编程方式, ...
- EF code First数据迁移学习笔记(转)
转自:http://www.cnblogs.com/icyJ/p/migration.html 准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-pa ...
- Code first 数据迁移
前段时间用到了EF,整理一下 EF ,全称Entity FramWork.就是微软以ADO.NET为基础发展的所谓ORM(对象关系映射框架,或者说是数据持久化框架). 简单说就是根据实体对象操作数据库 ...
- EF code First数据迁移学习笔记
准备工作 1.新建一个控制台项目, 在"程序包管理控制台"执行 Install-package EntityFramework //安装EF环境 2.在项目下新建类(Paper) ...
随机推荐
- NOIP2018初赛总结(提高组)(试题+答案+简要解析)
NOIP2018初赛总结(提高组) 更新完毕(纯手敲),如果有错误请在下面留言 单选题 T1.下列四个不同进制的数中,与其它三项数值上不相等的是 A.\((269)_{16}\) B.\((617)_ ...
- 20.包含min函数的栈
题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 思路分析: 设置两个栈,一个push,一个放置最小元素. 代码: impor ...
- winfom实现关闭后一直运行
using PLog; using System; using System.Collections.Generic; using System.Diagnostics; using System.L ...
- react 的安装和案列Todolist
react 的安装和案列Todolist 1.react的安装和环境的配置 首先检查有没有安装node.js和npm node -v npm -v 查看相关版本 2.安装脚手架工具 2.构建:crea ...
- ubuntu中出现:程序 'java' 已包含在下列软件包中的解决方法
已经安装sun java 在终端中输入java,出现以下提示: 程序 'java' 已包含在下列软件包中: * default-jre * gcj-4.8-jre-headless * gcj-4.9 ...
- C#是类型安全语言
C#是一种类型安全语言:所有的表达式都解析成某个类型的一个实例,在编译器生成的代码中,只会执行对这个类型来说有效的操作. [优势] 许多错误能在编译时就检测到,确保代码在执行这段代码前是正确的: 生成 ...
- 最长上升子序列问题(O(n^2)算法)
[题目描述] 给定N个数,求这N个数的最长上升子序列的长度. [样例输入] 7 2 5 3 4 1 7 6 [样例输出] 4 什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段不断严格上升的 ...
- linux 学习2 (基于ubuntu)
一.远程管理命令 关机/重启 shutdown reboot(重启) halt(直接关机) 查看或配置网卡信息 ifconfig ping 远程登录和复制文件 ssh ping 1. 关机/重 ...
- 15.Servlet程序结构与部署
1.JavaEE应用程序结构 组成:Servlet JSP 工具类 第三方jar包,HTML页面(图片.Flash) 部署结构: JavaEE应用根目录下的资源都是允许客户端访问的(WEB-IN ...
- python : No such file or directory
windows上写的python脚本,在linux上执行时报: No such file or directory 解决方法一# sed -i 's#\r##' mysqlchk.py 解决方法二脚本 ...