使用Entity Framework的Code First模式在进行数据迁移的时候会遇到一些问题,熟记一些常用的命令很重要,下面整理出了数据迁移时常用的一些命令。

一、模型设计
EF默认使用id字段作为主键,如果没有,则需要指定主键。

二、数据迁移基本命令和常用参数

1、安装Entity Framework

a、使用命令安装:visual studio工具栏->工具->NuGet 程序包管理器->程序包管理器控制台

输入命令:Install-Package EntityFramework。

2、基本命令和常用参数

> get-help 获取帮助的命令(例:get-help Enable-Migrations –detailed)
   –detailed 详细用法
> Enable-Migrations 启用迁移
   -Force 强制覆盖
   -ProjectName 目标项目(迁移类所在的项目)
   -StartUpProjectName 启动项目(包含数据库连接字符串配置文件所在的项目)
   -ContextTypeName 需要迁移的数据库(类)
   -ConnectionStringName 指定使用配置文件中连接字符串的名称
   -ConnectionString 指定使用的连接字符串
   -ConnectionProviderName 指定连接字符串的provider名称
   -MigrationsDirectory 指定迁移文件的目录(多个数据库,独立自动迁移用)
> Add-Migration 为挂起的Model变化添加迁移脚本
   -Force
   -ProjectName
   -StartUpProjectName
   -ConfigurationTypeName 指定使用的迁移配置
   -IgnoreChanges 忽略检测到挂起的model改变,为已有的数据库启用迁移创建一个初始的,空的迁移。
   -ConnectionStringName
   -ConnectionString
   -ConnectionProviderName
> Update-Database 将挂起的迁移更新到数据库
   -Force
   -ProjectName
   -StartProjectName
   -ConfigurationTypeName
   -ConnectionStringName
   -ConnectionString
   -ConnectionProviderName
   -SourceMigration 只有-Script打开时才有效。指定迁移的名称用作更新的起点。忽略则使用最后一次应用的迁移。
   -TargetMigration 指定将数据库更新到哪个迁移的名称。
   -Script 生成SQL脚本
> Get-Migrations 获取已经应用的迁移
3. 迁移操作步骤举例:
    DataBase :解决方案中,数据模型层项目名称
    Member :解决方案中,启动项的名称
   DataBase.Member.MemberEntities :需要应用数据迁移的数据上下文
a. 第一次启用迁移,输入命令:
Enable-Migrations -ProjectName DataBase -StartUpProjectName Member -ContextTypeName DataBase.Member.MemberEntities
并敲回车键,然后打开生成的Migrations文件夹中的Configuration.cs文件,
把构造方法中的AutomaticMigrationsEnabled = false;改为AutomaticMigrationsEnabled = true;
如果有多个数据库,每个库需要独立指定迁移文件,命令格式如下:
Enable-Migrations -ProjectName DataBase -StartUpProjectName Member -ContextTypeName DataBase.Member.MemberEntities -MigrationsDirectory:MemberMigrations
b. 模型有改动时,输入命令:add-migration update20150508 -ProjectName DataBase -StartUpProjectName Member -Force并敲回车键,创建迁移脚本
然后 输入命令:Update-Database -Verbose -ProjectName DataBase -StartUpProjectName Member并敲回车键,执行迁移操作
4. 配置自动迁移
在应用程序的入口方法(函数)里注册自动迁移:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataBase.Member.MemberEntities, DataBase.MemberMigrations.Configuration>());
注意:Configuration.cs生成的是internal sealed class,如果不在启动程序集中,则需要修改成public
5. 脱离visual studio环境做数据库版本迁移,可用migrate.exe,可参考:http://msdn.microsoft.com/zh-cn/data/jj618307

三. 注意事项:
1. 连接字符串不用DBFirst自动生成的那么复杂,采用如下格式即可:
<add name="MemberEntities" connectionString="server=.;database=Member;integrated security=true;" providerName="System.Data.SqlClient"/>
2. 有挂起的Model改变时,会导致操作不正常,注意操作步骤,必要时清理挂起的迁移。
3. 修正后数据库,里面的数据如果需要调整,用Configuration.cs文件里的Seed方法,示例如下:
protected override void Seed(DataBase.Member.MemberEntities context)
{
var users = new List<User>
{
new User { Account = "test", Password = "123" },
new User { Account = "admin", Password = "456" }
};
users.ForEach(s => context.Users.AddOrUpdate(p => p.Account, s));
context.SaveChanges();
}

Entity Framework应用:Code First模式数据迁移的基本用法的更多相关文章

  1. Entity Framework 之Code First自动数据迁移

    using MvcShopping.Migrations; using MvcShopping.Models; using System; using System.Collections.Gener ...

  2. Entity Framework(六):数据迁移

    在前面的几篇文章中,简单的介绍了如何使用Entity Framework的Code First模式创建数据库,但是,在前面的几篇文章中,我们都是通过使用数据库初始化策略来做,也就是每次先删除数据库然后 ...

  3. Entity Framework 学习系列(3) - MySql Code First 开发方式+数据迁移

    目录 # 写在前面 一.开发环境 二.创建项目 三.安装程序包 四.创建模型 五.连接字符串 六.编辑程序 七.数据迁移 写在最后 # 写在前面 这几天,一直都在学习Entity Framework ...

  4. AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式

    AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理.职称管理.部门管理.角色管理.角色权限管理等模块. 从Subsonic到Entity Framework Subsonic最早发布 ...

  5. EF 中 Code First 的数据迁移以及创建视图

    写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功 ...

  6. 【极力分享】[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例【转载自https://segmentfault.com/a/1190000004152660】

      [C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例 本文我们来学习一下在Entity Framework中使用Cont ...

  7. Entity Framework 6 Code First新特性:支持存储过程

    Entity Framework 6提供支持存储过程的新特性,本文具体演示Entity Framework 6 Code First的存储过程操作. Code First的插入/修改/删除存储过程 默 ...

  8. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  9. Entity Framework 之 Code First

    使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First [前言] 如果是Code First老鸟或者对Entity Framework不感兴趣,就不用浪费 ...

随机推荐

  1. SDUT 2608 Alice and Bob (巧妙的二进制)

    Alice and Bob Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Alice and Bob like playing ...

  2. 程序开发使用地图API时需注意的问题(转)

    最近在做一个基于地点提醒的移动应用,当初考虑大家都心知肚明的原因,谨慎的选择了百度地图,现在想想其实完全没有必要,好的应用本来就不分国界的,最后可能还是得换回Google地图.毕竟Google地图在技 ...

  3. PowerDesigner删除外键关系,而不删除外键列[转]

    PowerDesigner中配置外键关系时,如果要删除配置的外键关系,默认设置会一同删除外键列. 要更改此设置,需在菜单栏tools中打开Model Options,在Model Settings中点 ...

  4. 【php】基础学习3

    本节主要是php中函数的学习: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http-equiv=Con ...

  5. Linux调度器 - 进程优先级

    一.前言 本文主要描述的是进程优先级这个概念.从用户空间来看,进程优先级就是nice value和scheduling priority,对应到内核,有静态优先级.realtime优先级.归一化优先级 ...

  6. vim打造开发IDE

    个人的插件和配置 set nocompatible " 去除VI一致性,必须要添加 filetype off " 必须要添加 " advanced keys " ...

  7. 定时器quartz工具类

    一.gradle配置 // https://mvnrepository.com/artifact/org.quartz-scheduler/quartz compile group: 'org.qua ...

  8. 连接mysql-front数据库出现‘执行错误1251’的解决办法(有效)

    原因是MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错. 解决方法:更改加密方式 控制台中先连接mysql: 再输入: ALTER USER 'root'@'localhost' ...

  9. Python文件遍历二种方法

    分享下有关Python文件遍历的两种方法,使用的OS模块的os.walk和os.listdir实现. 关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os ...

  10. NSIS安装程序制作工具判断系统是否安装.NET

    前段时间忙了很久的系统总算上线了,由于是WinForm程序不能整个文件夹的发给客户使用.所以必须要打包,记得以前在VS2005中是自带部署功能的.现在换了VS2013那个部署功能完全弄不清方向.最后在 ...