关于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)。

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

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

  1. 如何使用MySQL一个表中的字段更新另一个表中字段

    [本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...

  2. Entity Framework 6 Code First的简单使用和更新数据库结构

    一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...

  3. Oracle SQLserver数据库创建表ID字段的自动递增_序列

    Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...

  4. 【数据库】SQL两表之间:根据一个表的字段更新另一个表的字段

    1. 写法轻松,更新效率高:update table1 set field1=table2.field1,field2=table2.field2from table2where table1.id= ...

  5. Oracle数据库创建表ID字段的自动递增

    转载地址:http://blog.itpub.net/22880668/viewspace-1117343/ 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建 ...

  6. SQL两表之间:依据一个表的字段更新还有一个表的字段

    1. 写法轻松.更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1 ...

  7. Oracle数据库在给表添加字段的sql中用comment报错

    原因:不同于mysql,Oracle数据库在添加表字段时不能直接用comment,而是单独写一个sql语句,如下: alter table SYS_USER add SENDMSG_LASTTIME ...

  8. SQL两表之间:根据一个表的字段更新另一个表的字段

    update table1 set field1=table2.field1,field2=table2.field2from table2where table1.id=table2.id

  9. 织梦dede解决“更新数据库archives表时出错"方法

    登陆dedecms网站管理后台,选择执行 sql命令工具,将下列命令执复制进去并执行多行执行,该问题就可以解决. alter table `idea_archives` ADD `voteid` me ...

随机推荐

  1. Spring——管理Bean的生命周期

    我们可以自定义bean的初始化和销毁方法,这里所指的的初始化和bean的构造不同,初始化是在bean构造完成后,对bean内部的属性或一些逻辑进行初始化. 首先要弄清一些概念: 构造(对象创建) 单实 ...

  2. vue 过渡 & 动画

    过渡 & 动画 过渡动画 用css先定义好动画效果 .a-enter-active, .a-leave-active { transition: all 1.5s; } .a-enter, . ...

  3. 接口测试:http状态码

    http状态码 每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:1.200 2开头的都表示这个请求发送成功,最常见的就是200, ...

  4. 访问控制列表 ACL

    访问控制列表(Access Control List,ACL) 是路由器和交换机接口的指令列表,用来控制端口进出的数据包.其目的是为了对某种访问进行控制. 作用 ACL可以限制网络流量.提高网络性能. ...

  5. linux shell实用常用命令

    本文主要介绍Linux Shell的一些使用小技巧收集,非常实用,需要的朋友可以参考下. 查看本机某端口是否被占用 netstat -anpt | grep 22 查看远程某端口是否被开放 echo ...

  6. for遍历用例数据时,报错:TypeError: list indices must be integers, not dict,'int' object is not iterable解决方法

    一:报错:TypeError: list indices must be integers, not dict for i in range(0,len(test_data)): suite.addT ...

  7. git系列之---将本地的项目添加到码云仓库

    1.前情: 本地写的 Demo 传到码云上面进行维护. 2.操作步骤: git init   将本地文件初始化为git 仓库,文件件会多一个 .git 文件夹[版本库]: git add .   或者 ...

  8. Linux 网络客户端工具

    ping命令 发送ICMP协议的echo request给目标主机 常用选项: 从指定的本机接口发送ICMP:-I INTERFACE 本机有多个接口(网卡),可以选择从哪个接口发:-I(大写i) 接 ...

  9. CSGO控制台命令

    转帖: 按下“~”即可开启 使用时先输入参数名 然后按下SPACE空出一格 再输入设定值即可 一般玩家进入游戏都只能用到Client(玩家用参数) 不过...如果你是开LAN GAME的人 就能进阶到 ...

  10. linux安装python3环境并配置虚拟环境

    1.安装必要库 yum -y install gcc yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite- ...