EF Code-First(Oracle)通过Migration来更新数据库的表的字段

有关Oracle中应用Entity Framework 6.x
Code-First情势开发,请参考博客(菩提下的杨过https://www.cnblogs.com/yjmyzz/p/how-to-use-code-first-in-oracle-with-entity-framework-6.html的求实介绍,里面关于使用Entity
Framework举行Code-First开发以及开创Database
Migration有详尽的上课以及官方参考的接连。这里就不赘述了。

运用EntityframeWork的CodeFirst来写程序的时候,会时不时遇上需要修改实体内容(即表中的字段的内容),那么些时候就需要用到Database
Migration,不过在实际过程中难免会碰着一些问题,这里记录多少个自己碰着的题材,以及缓解的措施。

1、关于成立和运用Migration,本文中连续参考的篇章已经有了,这里统计一下多少个利用命令。

工具(Tools)–>程序包管理器(Package
Manager)–>程序包管理器控制台(Package Manager
Console),1)Enable-Migrations;2)Add-Migration
MigrationName;3)Update-Migration(这里仿佛在此以前写错了,应该是:Update-Database)。

Oracle,2、Update-Migration(这里仿佛此前写错了,应该是:Update-Database)出错。

Update-Migration(这里仿佛此前写错了,应该是:Update-Database)有时候会出错,出错的来头有过多,原因或者是布置问题,可能是数据库原因,以及任何原因,这一个时候尽管又找不到解决的法子,那么些时候再度生成实体对应的表或者实体性质对应的表的字段,是没法的一种下策。比如自己在实际上支出中遭逢将没有添加[Attribute]的string类型属性添加[MaxLength]Attribute之后,生成Migration,怎么都通不过Update-Migration。无奈只好先删除旧的属性,再添加上去。就足以了。

3、Add-Migration出错。

Add-Migration出错一般容易报错的是“Unable to generate an explicit
migration because the following explicit migrations are
pending:[MigrationName].Apply the pending explicit migrations before
attenpting to generate a new explicit
migration”。这么些错误是因为后面有一个新建(New Add-Migration
Command)的Migration没有被实施(Update-Migration),处于听从(pending)的情景,只要先运行命令将以此migration执行了就解除pending状态了。一般都是由于update-migration执行不断才会造成前面的add-migration不可能持续。这里可以先将事先的Migration里面的“public
override void
up()”方法里面的代码注释了在推行Update-Migration命令,这样不会对数据库有实际操作,也消除了pending状态。然后就足以添加新的Migration了。

叠加(修改时间:二〇一七年18月19日09:56)

行使AutomaticMigrationsEnabled =
true(将Migrations文件夹下的Configurations.cs里面的装置改下就可以了)
 这样之后更新数据库的时候只需要输入Update-Database就可以了,不用Add-Migration了。

 

 

相关文章