解决 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) ...
随机推荐
- mysql 字段类型VARCHAR转换成DECIMAL
在我们写代码的实际业务中,有时候实体类用的是String,数据库中自然是VARCHAR类型,但是如果这个实体的属性值放的是数字类型,你查询的时候又需要对它进行排序.sql怎么写呢. 别担心mysql提 ...
- ARM,CPU相关概念
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 相关链接: ARM内核和架构都是什么意思,它们到底是什么关系?:ht ...
- 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_引用类型和值类型(二)
[引用类型和值类型的区别] //引用类型(由于使用了‘class’) class SomeRef { public Int32 x; } //值类型(由于使用了‘struct’) struct Som ...
- A. Free Cash
A. Free Cash time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- Oracle trunc函数使用
select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss'), to_char(trunc(sysdate), 'yyyy-mm-dd hh24:mi:ss') f ...
- hive 全表全字段对比
select * from ( select max(t1.source) as source ,t1.c1 ,t1.c2 ,t1.c3 ,count(*) as cnt from ( as sour ...
- google chrome浏览器自动填充解决方案
在chrome浏览器中,浏览器对于[1]type为password和text的.[2]带有name或者id属性的<input>标签会有自动填充表单功能,虽然会给用户记住密码带来一定的便利, ...
- 用vector实现二维向量
如果一个向量的每一个元素是一个向量,则称为二维向量,例如 vector<vector<int> >vv(3, vector<int>(4));//这里,两个“> ...
- JVM架构_XmnXmsXmxXss有什么区别:转
1.XmnXmsXmxXss有什么区别 首先,Xmn.Xms.Xmx.Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果. 了解jvm内存管理看这里:jvm ...
- Unity Animation.CrossFade Animation.Play
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerCo ...