Code First Migrations更新数据库结构(数据迁移)
code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建 (DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新 后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成。
- 已安装NuGet
 
- //原model
 
- using System.Collections;
 - using System.Collections.Generic;
 - using System.ComponentModel.DataAnnotations;
 - public class Lesson {
 - public int lessonID { get; set; }
 - [Required]
 - [MaxLength(50)]
 - public string lessonName { get; set; }
 - [Required]
 - public string teacherName { get; set; }
 - public virtual UserInfo UserInfo{get;set;}
 - }
 
- //新model
 
- using System.Collections;
 - using System.Collections.Generic;
 - using System.ComponentModel.DataAnnotations;
 - public class Lesson {
 - public int lessonID { get; set; }
 - [Required]
 - [MaxLength(50)]
 - public string lessonName { get; set; }
 - [Required]
 - [MaxLength(10)]
 - public string teacherName { get; set; }
 - public virtual UserInfo UserInfo{get;set;}
 - }
 
注:区别在于,我们给teacherName属性加了一个长度限制。
接下来,我们将开始持久化此model至数据库中(我们现在只是对属性作修改,此时数据库中此字段的长度为nvarchar(max),并不是nvarchar(10))
1:在config中配置数据库连接:
- <connectionStrings>
 - <add name="TestUsersDB" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestUsersDB;Data Source=XCL-PC\SQLEXPRESS" providerName="System.Data.SqlClient" />
 - </connectionStrings>
 
2:打开NuGet控制台:

3:运行命令Enable-Migrations
可能会出现如下错误:
- {
 
- AutomaticMigrationsEnabled = true;
 - }
 
再次执行Update-Database:
因为我把长度从max改为10,在更新数据结构时,它认为此操作会导致数据丢失,如下:
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
No pending code-based migrations.
Applying automatic migration: 201212090848057_AutomaticMigration.
Automatic migration was not applied because it would result in data loss.
如果确保没事,只需给此命令加个强制执行的参数即可:
Enable-Migrations -Force
最后再次执行:Update-Database

数据库中的原数据也没有丢失!
Code First Migrations更新数据库结构(数据迁移)的更多相关文章
- ASP.NET MVC4 新手入门教程特别篇之一----Code First Migrations更新数据库结构(数据迁移)修改Entity FrameWork 数据结构(不删除数据)
		
背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的 ...
 - Code First Migrations更新数据库结构(数据迁移) 【转】
		
注意:一旦正常后,每次数据库有变化,做如下两步: 1. Enable-Migrations 2.update-database 背景 code first起初当修改model后,要持久化至数据库中时, ...
 - Code First Migrations更新数据库结构的具体步骤
		
一.打开程序包管理器控制台 当你的实体模型与数据库架构不一致时,引发以下错误:The model backingthe 'SchoolContext' context has changed sinc ...
 - 转载Code First Migrations更新数据库架构的具体步骤
		
[转载] Code First Migrations更新数据库结构的具体步骤 我对 CodeFirst 的理解,与之对应的有 ModelFirst与 DatabaseFirst ,三者各有千秋,依项 ...
 - 使用Code first 进行更新数据库结构(数据迁移)
		
CodeFirst 背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会 ...
 - (转)使用Migrations更新数据库结构(Code First )
		
原文地址:http://blog.csdn.net/luoyeyu1989/article/details/8275237 背景 code first起初当修改model后,要持久化至数据库中时,总要 ...
 - Code First 下自动更新数据库结构(Automatic Migrations)
		
示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...
 - Code First 更新数据库结构(简单实现方法:会删除原来的数据)
		
之前在 http://www.cnblogs.com/mmcmmc/p/3833265.html 写到关于“Code First 更新数据库结构”的东西. 可是由于某种原因,新手们会出现各种问题,好了 ...
 - Entity Framework 6 Code First的简单使用和更新数据库结构
		
一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...
 
随机推荐
- NOJ 1074 Hey Judge(DFS回溯)
			
Problem 1074: Hey Judge Time Limits: 1000 MS Memory Limits: 65536 KB 64-bit interger IO format: ...
 - shutter截图工具
			
安装: 1.打开ubuntu software center,搜索shutter,安装. 使用:
 - Yii源码阅读笔记(二十八)
			
Yii/web中的Controller类,实现参数绑定,启动csrf验证功能,重定向页面功能: namespace yii\web; use Yii; use yii\base\InlineActio ...
 - MySql超新手入门
			
https://www.kancloud.cn/thinkphp/mysql-tutorial/36457
 - Python开发【第六章】:Python面向对象
			
编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种 ...
 - open falcon dashboard 安装
			
open falcon dashboard 安装 yum -y install lrzsz python-virtualenv mysql-devel python-devel libffi-deve ...
 - 《30天自制操作系统》14_day_学习笔记
			
harib11a--harib11c: 继续测试性能:我们在harib10h中进行了定时链表结构的改进“消除了移位处理”.下面我们设定490个定时器(它们都被设定启动50天才超时)来测试一下改进的效果 ...
 - 移动端开发tips
			
为什么使用touch click有300sm的延迟 touch支持多点触摸 手势操作
 - C#中把Datatable转换为Json的5个代码实例
			
一. /// <summary> /// Datatable转换为Json /// </summary> /// <param name="table" ...
 - POJ - 2183 Bovine Math Geniuses
			
“模拟“题,运用哈希,不断地按照一定运算规律对一个结果进行计算,如果重复出现就停止并且输出该数.注意到仔细看题,这种题一定要细心! POJ - 2183 Bovine Math Geniuses Ti ...