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.htmlOracle,的具体介绍,里面关于选拔Entity
Framework进行Code-First开发以及开创Database
Migration有详细的上书以及合法参考的接连。那里就不赘述了。

运用EntityframeWork的CodeFirst来写程序的时候,会时常遇到须求修改实体内容(即表中的字段的始末),这些时候就供给用到Database
Migration,不过在实质上进度中难免会境遇一些标题,这里记录几个本身遇上的难题,以及缓解的主意。

一 、关于创立和行使Migration,本文中总是参考的篇章已经有了,那里计算一下多少个利用命令。

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

② 、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了。

外加(修改时间:二〇一七年七月二十三日09:56)

运用AutomaticMigrationsEnabled =
true(将Migrations文件夹下的Configurations.cs里面包车型地铁装置改下就能够了)
 那样现在更新数据库的时候只必要输入Update-Database就足以了,不用Add-Migration了。

 

 

相关文章