EF应用CodeFirst模式,数据迁移的基本用法要点摘记

第一次使用EntityFramework做CodeFirst的开发,在做数据迁移时遇到不少问题,花费了一整天的时间学习调整,总算时学会了基本用法和要点。现在整理后贴出来,希望对和我一样的初用者能有一些帮助,少走一些弯路,少花一点时间摸索,都是值得的。

一. 模型设计

1.  遵循EF标准,注意表关系配对

2.  数据模型里尽量把必须的属性和说明都写全

3.  EF默认id字段为主键,如果没有,需指定主键

二. 数据迁移

1.  命令运行环境:visual studio工具栏->工具->NuGet 程序包管理器->程序包管理器控制台

2.  基本命令和常用参数

>  get-help                              获取帮助的命令(例:get-help Enable-Migrations –detailed)

–detailed                             详细用法

>  Enable-Migrations              启用迁移

-Force                                  强制覆盖

-ProjectName                      目标项目(迁移类所在的项目)

-StartUpProjectName          启动项目(包含数据库连接字符串配置文件所在的项目)

-ContextTypeName             需要迁移的数据库(类)

-ConnectionStringName     指定使用配置文件中连接字符串的名称

-ConnectionString               指定使用的连接字符串

-ConnectionProviderName 指定连接字符串的provider名称

>  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.  迁移操作步骤举例:

a.  第一次启用迁移,输入命令:

Enable-Migrations -ProjectName DataBaseModel -StartUpProjectName MemberContext -ContextTypeName DataBaseModel.MemberContext.MemberEntities

并敲回车键,然后打开生成的Migrations文件夹中的Configuration.cs文件,

把构造方法中的AutomaticMigrationsEnabled = false;改为AutomaticMigrationsEnabled = true;

b.  模型有改动时,输入命令:add-migration update20150508 -ProjectName DataBase -StartUpProjectName Member -Force并敲回车键,创建迁移脚本

然后 输入命令:Update-Database -Verbose -ProjectName DataBase -StartUpProjectName Member并敲回车键,执行迁移操作

4.  配置自动迁移

在应用程序的入口方法(函数)里注册自动迁移:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<OrderContext, 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改变时,会导致操作不正常,注意操作步骤,必要时清理挂起的迁移。

时间: 2024-10-13 16:19:17

EF应用CodeFirst模式,数据迁移的基本用法要点摘记的相关文章

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

使用Entity Framework的Code First模式在进行数据迁移的时候会遇到一些问题,熟记一些常用的命令很重要,下面整理出了数据迁移时常用的一些命令. 一.模型设计 EF默认使用id字段作为主键,如果没有,则需要指定主键. 二.数据迁移基本命令和常用参数 1.安装Entity Framework a.使用命令安装:visual studio工具栏->工具->NuGet 程序包管理器->程序包管理器控制台 输入命令:Install-Package EntityFramework

20.1翻译系列:EF 6中自动数据迁移技术【EF 6 Code-First系列】

原文链接:https://www.entityframeworktutorial.net/code-first/automated-migration-in-code-first.aspx EF 6 Code-First系列文章目录: 1 翻译系列:什么是Code First(EF 6 Code First 系列) 2.翻译系列:为EF Code-First设置开发环境(EF 6 Code-First系列) 3.翻译系列:EF Code-First 示例(EF 6 Code-First系列) 4

MVC5+EF6+MYSQl,使用codeFirst的数据迁移

之前本人在用MVC4+EF5+MYSQL搭建自己的博客.地址:www.seesharply.com;遇到一个问题,就是采用ef的codefirst模式来编写程序,我们一般会在程序开发初期直接在global.asax里面加上 System.Data.Entity.Database.SetInitializer(new System.Data.Entity.DropCreateDatabaseIfModelChanges<Farm.Models.FarmContext>());//每次在模型更改的

EF Code First之数据迁移

1. Enable-Migrations -ContextTypeName MvcMovie.Models.MovieDBContext 2. add-migration Initial //Initial”是随意命名的,它用来命名创建好的迁移文件. 3. update-database EF Code First之数据迁移

实现CodeFirst自动数据迁移无需命令

本主题假设您掌握了实体框架中 Code First 迁移的基本知识. 借助自动迁移功能,您无需对您所做的每一个更改都在程序包管理器控制台中运行Update-Database 命令. 启用迁移 只需执行一次开启迁移命令,在程序包管理器控制台中运行 Enable-Migrations(如已启用迁移则无需再次执行). AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; 实现自动迁移 Global.as

【EF】EF Code-First数据迁移

Code-First数据迁移  首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.ComponentModel.DataAnnotations; 6 using Syste

EF Code-First数据迁移

Code-First数据迁移  首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.ComponentModel.DataAnnotations; 6 using Syste

Entityframework Codefirst模式自动生成数据库方式

EF在codefirst模式下能自动生成数据库,那它是如何生成的呢,默认情况下如何生成的呢?先来看看用来生成数据库的DbContext类吧 1 protected DbContext(); 2 protected DbContext(DbCompiledModel model); 3 public DbContext(string nameOrConnectionString); 4 public DbContext(DbConnection existingConnection, bool c

EF架构~CodeFirst数据迁移与防数据库删除

回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的,第二个问题是数据迁移问题,当你有新的实体建立后,如何响应到数据库,这成为一个问题,当然实现也很简单,我们直接使用migrations工具即可. 一 防数据库删除 将你的业务DbInitializer的基类改成CreateDatabaseIfNotExists即可解决这个问题,这是在数据初始化时需要做