Code First Migrations更新数据库结构(数据迁移)
来源:互联网 发布:手机c语言程序编写软件 编辑:程序博客网 时间:2024/04/30 10:49
code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的旧数据库中包含一些测试数据时,当持久化更新后,原数据将全部丢失,故我们可以引入EF的数据迁移功能来完成。
http://blog.csdn.net/luoyeyu1989/article/details/8275237
- 已安装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;}
- }
接下来,我们将开始持久化此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
可能会出现如下错误:
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
数据库中的原数据也没有丢失!
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations更新数据库结构(数据迁移)
- Code First Migrations 迁移更新数据库
- Code First Migrations更新数据库结构
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- Code First Migrations更新数据库结构的具体步骤
- EF Code First Migrations数据库迁移
- 操作tiff文件——合并、分割
- 那些应战巨子的笔直旅行电商
- 无情落泪伤心处
- 爱你,为什么就不能在一起?
- IEC104规约简介
- Code First Migrations更新数据库结构(数据迁移)
- Oracle 基本表压缩(Basic Table Compression)
- axure6.5汉化最新正式破解版本下载(有注册码)
- Eclipse快捷键
- C++第7周(春)项目3 成员函数、友元函数和一般函数有区别
- vs2010调试dll文件
- 广州传智播客PHP培训招生要求
- 猴子吃桃问题
- HDU1667:The Rotation Game(IDA星)