背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据

背景

code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成。

要求

已安装NuGet

过程示例

//原modelusing 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;}

}//新modelusing 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中配置数据库连接:

2:打开NuGet控制台:

3:运行命令Enable-Migrations

可能会出现如下错误:

Checking if the context targets an existing database...

Detected database created with a database initializer. Scaffolded migration '201212090821166_InitialCreate' corresponding to existing database. To use an automatic migration instead, delete the Migrations folder and re-run Enable-Migrations specifying the -EnableAutomaticMigrations

parameter.

Code First Migrations enabled for project MvcApplication1.

此时项目会出现如下文件夹:

打开configuation.cs,将作出如下修改:

public Configuration()

{

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

数据库中的原数据也没有丢失!

3:

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql migrations_Code First Migrations更新数据库结构(数据迁移)相关推荐

  1. Code First Migrations更新数据库结构的具体步骤

    一.打开程序包管理器控制台 当你的实体模型与数据库架构不一致时,引发以下错误: The model backingthe 'SchoolContext' context has changed sin ...

  2. Code First 下自动更新数据库结构(Automatic Migrations)

    示例 Web.config <?xml version="1.0" encoding="utf-8"?> <configuration> ...

  3. Entity Framework 6 Code First的简单使用和更新数据库结构

    一.安装Entity Framework 6 在项目中右击选择"管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.confi ...

  4. mysql下备份所有的数据库和数据表

    shell脚本实现 mysql下备份所有的数据库和数据表 要求:(1)mysql下的数据库的表要以table_name.sql备份保存 (2)保存在当前目录下,并以当天时间命名 #!/bin/bash ...

  5. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

  6. Oracle数据库迁移测试数据,Oracle数据库的数据迁移方法

    Oracle数据库的数据迁移方法 发表于:2008-04-14来源:作者:点击数: 随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统 ...

  7. ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法

    添加所需的表空间和用户到目标数据库中:安装所需的SQL*Net2或者Net8软件,并配置用于连接数据库的别名. 在DOS命令提示符下设置oracle_sid=Oracle7_sid. 以Interna ...

  8. 使用Code First Migrations依据代码更新数据库结构

    ADO.NET团队最近发布了Code First Migrations Beta 1 for Entity Framework (EF).该程序包已经在NuGet提供,位于EntityFramewor ...

  9. mongoose换成mysql_如何将MongoDB数据库的数据迁移到MySQL数据库中

    FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...

最新文章

  1. [ 一起学React系列 -- 11 ] React-Router4 (1)
  2. SelectBox插件
  3. MFC CAsyncSocket类基本使用 - 1
  4. linux压缩命令 实例子,Linux下的tar压缩解压缩命令详解及使用实例分析
  5. matlab优化应用
  6. Redis Lua脚本中学教程(上)
  7. 漫画 | Kubernetes带你一帆风顺去远航
  8. maven上传jar到私服
  9. 搞懂Linux零拷贝,DMA
  10. [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching
  11. oracle rpad()函数
  12. springcloud之feign远程调用
  13. VUE 日历 生成钉钉考勤系统
  14. 南方cass提取坐标生成表格_如何利用EXCEL随机生成测量点坐标导入南方CASS中计算土方量...
  15. Android扩展知识 - 减轻C盘压力,扩大C盘空闲容量
  16. dsa签名 linux_linux SElinux防护 加密解密 gpg签名与认证
  17. 本博客早已废除。请移步新地址
  18. Android 签到功能
  19. 将base64编码格式数据转化为图片
  20. No Reference Video Quality Assessment with authentic distor-tions using 3-D Deep Convolutional Neura

热门文章

  1. Vue3 --- vue-router4 编程导航
  2. 中正则表达式详解_python :正则表达式/re库 超级详细de注释解释
  3. 多机器人路径规划的代码_知荐 | 地平线机器人算法工程师总结六大路径规划算法...
  4. 战神笔记本电脑自带access吗_笔记本电脑卡顿不要急着换,这几个方法,让你的电脑流畅爆表...
  5. 拼的html页面乱,页面分页html拼接
  6. 包机制、阿里巴巴开发手册
  7. 线性表之顺序表与单链表的区别及优缺点
  8. 计算机应用基础(高起专)答案,东北师范大学14秋《计算机应用基础(高起专)》14秋在线作业1答案...
  9. android显示矩阵大小,关于android:显示代表灰度图像的双值矩阵
  10. inputstream 初始化_如何完美回答面试官问的Mybatis初始化原理!