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 ...
随机推荐
- GitBook安装部署实操手册
前言 GitBook是一个基于Node.js的命令行工具,可使用Git和Markdown来编写文档,赞誉太多,不再赘述. Node.js 下载安装包 cd /tmp wget https://node ...
- CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
本文是在CentOS7.4 下进行CDH6集群的完全离线部署.CDH5集群与CDH6集群的部署区别比较大. 说明:本文内容所有操作都是在root用户下进行的. 文件下载 首先一些安装CDH6集群的必须 ...
- 性能优化-CPU占用过高问题排查
1. 性能优化是什么? 1.1 性能优化就是发挥机器本来的性能 1.2 性能瓶颈在哪里,木桶效应. CPU占用过高 1.现象重现 CPU占用过高一般情况是代码中出现了循环调用,最容易出现的情况有几 ...
- Python - os.walk()详细使用
os.walk() 方法简单介绍 主要用来遍历一个目录内各个子目录和子文件 是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 方法参数介绍 os.walk(top[, t ...
- [PowerShell]Windows服务开启、重启、关闭
# 获取服务信息 PS C:\Users\Administrator> Get-Service win* Status Name DisplayName ------ ---- -------- ...
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.1)- FlexSPI NOR连接方式大全(RT1015/1020/1050)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1015/1020/1050三款MCU的FlexSPI NOR启动的连接方式. 由于i.MXRT内部没有非易失性存储 ...
- PWN之Canary学习
Canary 参考链接:https://ctf-wiki.github.io/ctf-wiki/pwn/linux/mitigation/canary-zh/ 0x1 简介: 用于防止栈溢出被利用的一 ...
- Centos8(Liunx) 中安装PHP7.4 的三种方法和删除它的三种方法
编译安装 Centos8下PHP源码编译和通过yum安装的区别和以后的选择 其实这两种方法各有千秋: yum安装: 从yum安装来说吧,yum相当于是自动化帮你安装,你不用管软件的依赖关系,在yum安 ...
- Play! 1.x Eclipse Debug调试报错解决方法记录
使用Play eclipsify xxxx[项目路径],可以把play new xxxx[项目路径]创建的工程生成为Eclipse的项目 但是在Debug AS 调试的时候,会报以下错误 Error ...
- 在vue中继续使用layer.js来做弹出层---切图网
layer.js是一个方便的弹出层插件,切图网专注于PSD2HTML等前端切图多年,后转向Vue开发.在vue开发过程中引入layer.js的时候遇到了麻烦.原因是layer.js不支持import导 ...