EF 数据迁移问题总结

  在项目中使用Entity Framework的Code First模式,进行数据迁移时,Migration文件夹中存放的是每一次Entity的修改如何同步到数据的操作方法,每个文件中都只有Up和Down这两个方法。例如第一次数据迁移时,会创建数据表,在程序包管理控制台中输入命令:add-migration migrationname,会生成一个migrationname.cs的文件,在对应的Migration类文件的代码如下:

 1 public override void Up()
 2         {
 3             CreateTable(
 4                 "dbo.FileBoxes",
 5                 c => new
 6                     {
 7                         Id = c.Long(nullable: false, identity: true),
 8                         FileNo = c.String(),
 9                         FileTitle = c.String(),
10                         Version = c.String(),
11                         FileType = c.String(),
12                         BoxNo = c.String(),
13                         ManageStyle = c.String(),
14                         Year = c.String(),
15                         Remark = c.String(),
16                     })
17                 .PrimaryKey(t => t.Id);
18
19         }
20
21         public override void Down()
22         {
23             DropTable("dbo.FileBoxes");
24         }

  再在程序包管理控制台中输入命令:update-database,即可将Entity的设计同步到数据库中。

  当后期对Entity进行了修改时,再次运行 add-migration migrationname 和update-database这两个命令,即可再生成一个同步文件,并将修改更新到数据库中,例如将Entity中的Year属性改为Years,生成的同步文件代码如下:

public override void Up()
        {
            AddColumn("dbo.FileBoxes", "Years", c => c.String());
            DropColumn("dbo.FileBoxes", "Year");
        }

        public override void Down()
        {
            AddColumn("dbo.FileBoxes", "Year", c => c.String());
            DropColumn("dbo.FileBoxes", "Years");
        }

  这里需要注意两个问题:

  1、不能随意删除Migration文件夹内的同步文件,否则数据同步会失败。本人项目中多次进行Migration,但是将第一次创建数据表的Miragtion文件删除了,总是update-database失败,找了好半天才发现原因在这里。

  2、每次add-Migration时取的文件名不能重名。命名时可以按照当天日期拼接当天的版本号组成,例如:20160514001,20160514002。

时间: 2024-10-27 21:24:41

EF 数据迁移问题总结的相关文章

EF数据迁移,未将对象引用设置到对象实例

现象: 执行Enable-Migrations -force时就报"未将对象引用设置到对象实例"的异常: DbProviderServicesExtensions.GetProviderManifestTokenChecked 原因: 1.项目启动项的App.config或web.config里面没有配置 entityFramework节点或connectionStrings节点,EF在数据迁移时找不到数据库连接串信息 2.项目启动项配置错误,应该选择有entityFramework节

EF 数据迁移

问 题 支持“AppContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库 原因以及解决办法 在用EF CodeFirst模式开发当中难免会对类进行修改,修改后再次运行就会出现异常,提示上下文的模型已在数据库创建后发生改变. 如果是项目初期开发倒是好办,可以删掉数据库重新建立,但是如果项目已经运行了,我想你不会想初期那样做吧,会照成数据丢失的.这个时候就需要使用EF的数据迁移功能了,下面教你如何使用数据迁移. 打开VS,工具>库程序包管理器>程序

EF数据迁移

开启codefirst迁移命令: Enable-Migrations -ContextTypeName BlogEntities BlogEntities(上下文,继承DbContext的那个类) 更新数据库命令: Update-Database -Verbose 新增变更类文件命令: Add-Migration AddBolg AddBolg(生成的文件名) 自动数据迁移: 将Configuration的AutomaticMigrationsEnabled设置为true 当设置自动数据迁移之后

EF数据迁移命令

在包管理器控制台中输入命令“enable-migrations”,然后按Enter键!Visual Studio将生成一个名为“Configurations.cs”的文件; 你可以安全地忽略它,但你需要保持它. EF迁移设置的最后一步是在包管理器控制台中输入命令“add-migration InitialMigration -IgnoreChanges”.“InitialMigration”(高亮的黄色)是您想要给当前迁移的名称,“IgnoreChanges”句柄是告诉EF Migrations

EF数据迁移(当模型改变时更新数据库)

https://msdn.microsoft.com/zh-CN/data/jj591621 Enable-Migrations Add-Migration 名称 Update-Database –Verbose

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

写在前面: EF 中 Code First 的数据迁移网上有很多资料,我这份并没什么特别.Code First 创建视图网上也有很多资料,但好像很麻烦,而且亲测好像是无效的方法(可能是我太笨,没搞成功),我摸索出了一种简单有效的方法,这里分享给大家. EF是Entity Framework(实体框架)的简写,是微软出品的用来操作数据库的一个框架,会ASP.NET MVC的朋友对他肯定都不陌生.由于学艺不精,我对EF存在一疑虑,就不以[提问]的方式来问了,我以[总结]的方式来表达,如果总结有误的地

EF CodeFirs 代码迁移、数据迁移

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    标题叫EF CodeFirs 代码迁移.数据迁移. 那么:到底叫代码迁移还是数据迁移?我在网上看了大半天,怎么叫的都有,后来查了MSDN,MSDN上叫代码迁移.在此,我们也称之为代码迁移. 为什么有人将其称为数据迁移呢?可能是因为本节内容和操作数据库有关<增加一张表,删除一张表,增加一个表字段,删除一个表字段,修改一个表字段等>,所以网友称之为数

【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之数据迁移

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