Entity Framework应用:Code First模式数据迁移的基本用法

使用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(); 
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值