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)。
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来更新数据库的表的字段的更多相关文章
- 如何使用MySQL一个表中的字段更新另一个表中字段
[本文出自:https://www.jb51.net/article/150323.htm] 这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ...
- Entity Framework 6 Code First的简单使用和更新数据库结构
一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...
- Oracle SQLserver数据库创建表ID字段的自动递增_序列
Oracle 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create table t_user( Id ),userid ),loginpasswo ...
- 【数据库】SQL两表之间:根据一个表的字段更新另一个表的字段
1. 写法轻松,更新效率高:update table1 set field1=table2.field1,field2=table2.field2from table2where table1.id= ...
- Oracle数据库创建表ID字段的自动递增
转载地址:http://blog.itpub.net/22880668/viewspace-1117343/ 将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现) ----创建 ...
- SQL两表之间:依据一个表的字段更新还有一个表的字段
1. 写法轻松.更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1 ...
- Oracle数据库在给表添加字段的sql中用comment报错
原因:不同于mysql,Oracle数据库在添加表字段时不能直接用comment,而是单独写一个sql语句,如下: alter table SYS_USER add SENDMSG_LASTTIME ...
- SQL两表之间:根据一个表的字段更新另一个表的字段
update table1 set field1=table2.field1,field2=table2.field2from table2where table1.id=table2.id
- 织梦dede解决“更新数据库archives表时出错"方法
登陆dedecms网站管理后台,选择执行 sql命令工具,将下列命令执复制进去并执行多行执行,该问题就可以解决. alter table `idea_archives` ADD `voteid` me ...
随机推荐
- [redis读书笔记] 第一部分 数据结构与对象 对象类型
- 从前面redis的基本数据结构来看,可以看出,redis都是在基本结构(string)的基础上,封装了一层统计的结构(SDS),这样让对基本结构的访问能够更快更准确,提高可控制度. - redis ...
- 论文《learning to link with wikipedia》
learning to link with wikipedia 一.本文目标: 如何自动识别非结构化文本中提到的主题,并将其链接到适当的Wikipedia文章中进行解释. 二.主要借鉴论文: Miha ...
- Digital Twin 数字孪生
GE的一个NB视频:http://v.youku.com/v_show/id_XMjk0NTMzODIyNA==.html http://www.gongkong.com/news/201701/35 ...
- ELK日志分析平台
ELK日志分析平台 ELK(1): ELK-简介 ELK(2): ELK-安装环境和安装包 ELK(3): ELK-安装elasticsearch ELK(4): ELK-安装logstash ...
- pos 访问超时 windows连接超时 497 天后未关闭 TIME_WAIT
问题描述: nginx连接后台tomcat程序 一直报错 nginx的error日志如下 // :: [error] #: *: A connection attempt failed because ...
- Unity 编辑器开发SceneView GUI控制
前几天项目需要就做了个类似于Collider EditCollider的功能 下面是我做的效果 基础代码如下: public class ExportCFGInputWindow : EditorWi ...
- 小浩算法|一文让你学会如何用代码判断"24"点
“24点”是一种数学游戏,正如象棋.围棋一样是一种人们喜闻乐见的娱乐活动.它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受.今天就为大家分享一道关于“24点” ...
- flyway使用简介
官网 https://flywaydb.org/ 背景 Flyway是独立于数据库的应用.管理并跟踪数据库变更的数据库版本管理工具.用通俗的话讲,Flyway可以像Git管理不同人的代码那样,管理不同 ...
- C++ substr 截取子串
1. substr() 方法使用 string substr (size_t pos = 0, size_t len = npos) const;pos: 截取初始位置(从头开始截取pos=0)len ...
- JavaScript-状态模式
状态模式 一个对象有状态变化 每次状态变化都会触发一个逻辑 不能总是用 if...else 来控制 示例:交通信号灯的不同颜色变化 传统的 UML 类图 javascript 中的 UML 类图 cl ...