EF CodeFirst下的自动迁移
当我们修改数据模型,添加一个如下字段

再次运行程序,会因为数据库结构与模型不一致而报错

为解决以上错误可以采取以下三种方式
1、 删除数据库,重新运行站点,会重新生成数据库,这样就会丢失数据
2、 手动在数据库中修改表结构,使其与模型一致
3、 使用如下教程所示的EF的数据迁移【Code First Migrations】
在NuGet程序包管理器中执行如下命令启用EF的数据迁移

此时会生成一下两个文件

其中【201504030707151_InitialCreate】是根据存在的数据库文件生成的,建表的代码,如下

【Configuration】是自动迁移的配置类,Seed方法中可以进行一些数据的初始化,如下

然后,我们继续在程序包管理器控制台执行以下命令,生成数据库改动相关的代码,Initial为自动将要生成的类的名称,可以自定义,但是要避免与其他类型重复,否则会报错

如下生成了一个【201504030712220_Initial】文件

查看代码可以看到我们添加了一个Description字段:

最后我们在程序包管理器的控制台中执行如下命令,将所有变动写入数据库

此时,再次运行站点,可以发现网站已经可以正常访问,Description字段已经成功添加进数据库中。

EF CodeFirst下的自动迁移的更多相关文章
- EF CodeFirst下数据库更新
		
用EF Code first模式来开发系统,可使用Migrations命令来让数据库自动更新 1.在VS->工具->库程序包管理器->程序包管理控制台 中执行 Enable-Migr ...
 - EF  CodeFirst数据迁移与防数据库删除
		
1 开启migrations功能 enable-migrations -force 2 添加迁移版本 add-migration 名称后缀 我们每次修改实体后,都应该使用这个add-migration ...
 - [.NET领域驱动设计实战系列]专题一:前期准备之EF CodeFirst
		
一.前言 从去年已经接触领域驱动设计(Domain-Driven Design)了,当时就想自己搭建一个DDD框架,所以当时看了很多DDD方面的书,例如领域驱动模式与实战,领域驱动设计:软件核心复杂性 ...
 - EF的CodeFirst模式自动迁移(适用于开发环境)
		
EF的CodeFirst模式自动迁移(适用于开发环境) 1.开启EF数据迁移功能 NuGet包管理器------>程序包管理控制台---------->Enable-Migrations ...
 - 2.EF中 Code-First 方式的数据库迁移
		
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/code-first-migrations-with-entity-framework/ 系列目 ...
 - EF CodeFirst  如何通过配置自动创建数据库<当模型改变时>
		
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 本篇为进阶篇,也是弥补自己之前没搞明白的地方,惭愧 ...
 - EF CodeFirst系列(9)---添加初始化数据和数据库迁移策略
		
1.添加初始化数据(Seed) 我们可以在初始化数据库的过程中给数据库添加一些数据.为了实现初始化数据(seed data)我们必须创建一个自定义的数据库初始化器(DB initializer),并重 ...
 - 20.翻译系列:Code-First中的数据库迁移技术【EF 6 Code-First系列】
		
原文链接:https://www.entityframeworktutorial.net/code-first/migration-in-code-first.aspx EF 6 Code-First ...
 - EF Code-First数据迁移
		
Code-First数据迁移 首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...
 
随机推荐
- 面试题21:如何判断二叉树是搜索二叉树BST?
			
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - 剑指offer63:数据流中的中位数
			
题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. ...
 - [笔记] Python入门---time模块
			
#__author:Mifen #date: 2018/12/6 import time ''' 时间戳是一种用于表示时间的方式.从1970年1月1日0时0分0秒0毫秒开始到指定时间的秒数.世间戳也叫 ...
 - SQL2008无法连接到(local),该账户当前被锁定,所以Sa用户登陆失败
			
1 安装小结 换了电脑,很多软件都得重装,期间报了很多问题,比如说先装vs2008再装sql server2008r2会报一个“存在2008早期版本”,通过查找,百度一系列的坑爹之路后,我还是把vs2 ...
 - 细说setTimeout/setImmediate/process.nextTick的区别
			
node.js中的非IO的异步API提供了四种方法,分别为setTimeOut(),setInterval(),setImmediate()以及process.nextTick(),四种方法实现原理相 ...
 - Xcode DEBUG宏定义,debug和release模式的选择
			
设置DEBUG, 使用宏定义: #if DEBUG NSLog(@"debug model"); #else //执行release模式的代码 #endif
 - JSP学习笔记(4)-Javabean
			
按照sun公司的定义,Javabean是一个可重复使用的软件组件,实际上Javabean是一种Java类,通过封装属性和方法成为具有某种功能或处理某个业务的对象,简称Bean,Javabean基于ja ...
 - 容易忽略的小知识之 Date 函数参数
			
Date 对象启用基本存储器并取得日期和时间. dateObj = new Date()dateObj = new Date(dateVal)dateObj = new Date(year, mont ...
 - CF954F Runner's Problem
			
离散化+矩阵快速幂 首先看数据范围可以确定该题的算法为矩阵快速幂 然后易得转移矩阵 \[\begin{bmatrix} 1 & 1 & 0 \\ 1 & 1 & 1 \ ...
 - [WEB面试题] web前端面试题HTML+CSS第一弹,个人整理部分面试题汇总
			
以下内容仅供参考,网络整理而来 1.XHTML和HTML是什么有什么不同的区别 HTML是一种基本的WEB网页设计语言 XHTML可扩展超文本标记语言,是一种置标语言,表现方式与超文本标记语言(HTM ...