背景 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. bzoj1562[NOI2009]变换序列——2016——3——12
  2. 打造自己的树莓派监控系统3--canvas.js绘制数据
  3. JavaScript错误:Maximum call stack size exceeded错误
  4. 使用iOS原生sqlite3框架对sqlite数据库进行操作
  5. Python 技术篇-通过进程名获取进程pid实例演示,使用psutil库获取进程id
  6. C++使用位操作将数字乘以7的算法实现(附完整源码)
  7. etherum 常用命令及搭建私有链
  8. jenkins-系统管理-节点管理进去报错
  9. 安全伞项目-腾讯智能对话平台TBP使用
  10. 【收山之作】用yourdiary为例 学习KRKR2 XP3加密静态分析
  11. Windows字体拯救计划(雅黑+monaco+mactype)
  12. qq机器人智能聊天插件源码
  13. excel两列数据对比找不同_技巧不求人168期 Excel两列数据找不同的3种方法 Word快速更改文本排序...
  14. 大学生IT创业还有神话吗?
  15. java中级程序员面试
  16. html实现音乐界面设计,基于HTML5技术的音乐播放器的设计与实现.doc
  17. 有没有ai绘画教程?什么软件能实现ai绘画?
  18. 我的专业计算机作文说明文,我的电脑作文说明文
  19. 常数变易法的“前世今生”
  20. 项目管理工具之Git/GitHub/Gitee/Gitlab

热门文章

  1. 使用OSHI 检索系统信息,超牛逼、超级秀、超级巴适!!快来看看吧!不然你会后悔的!!666
  2. linux中fdisk的参数,Linux fdisk命令参数及用法详解--Linux磁盘分区管理命令fdisk
  3. java 异常补偿解决_第三方接口调用异常补偿机制实现实例记录
  4. docker安装zookeeper_Docker安装Zookeeper以及Zookeeper常用命令
  5. r语言查找是否存在空值_关于R包安装你知道多少?
  6. tcp分包传图片 如何还原_技术控丨超详细解析TCP重传机制
  7. html5画布 文本无法显示,淡出HTML5画布中的文本效果
  8. data后缀文件解码_Java语法进阶13-文件、IO流
  9. hbase 按时刻查询_Hbase查询工具类,根据时间查询数据
  10. php sql查询两个表语句,sql多表查询语句与方法