关于Oracle中使用Entity Framework 6.x
Code-First方式开发,请参考博客(菩提树下的杨过)的具体介绍,里面关于使用Entity
Framework进行Code-First开发以及创建Database
Migration有详细的讲解以及官方参考的连接。这里就不赘述了。

乐白家娱乐loo666,使用EntityframeWork的CodeFirst来写程序的时候,会经常遇到需要修改实体内容(即表中的字段的内容),这个时候就需要用到Database
Migration,但是在实际过程中难免会碰到一些问题,这里记录几个我遇到的问题,以及解决的方法。

1、关于创建和使用Migration,本文中连接参考的文章已经有了,这里总结一下几个使用命令。

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

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

附加(修改时间:2017年12月19日09:56)

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