ABP框架EF6链接Oracle数据库手动迁移
环境:VS2017 + ABP官方模板(不含Zero) +Oracle 11Gx64DB + Oracle 11Gx32Client(PLSQL工具访问)
一、Abp项目的下载以及运行
1、创建abp项目。进入官网 https://aspnetboilerplate.com/下载项目模板。abp项目有两种架构,一种是单页面(angularjs),另一种是mvc的。点击创建按钮。入下图:

2、对下载的源码首先进行编译,让其自动下载Nuget项目依赖包,保证源码可以编译通过。
3、在WinRun2.Core项目中增加User.cs类:

对User实体增加几个属性如下:

3、在WinRun2.EntityFramework项目中对WinRun2DbContext类进行修改:

增加DbSet<User>:

增加Oracle数据库的Schema(默认是dbo,Oracle数据库必须要修改):

二、Oracle DB 对EF code first的支持
1、在WinRun2.EntityFramework项目增加Oracle EF 驱动的引用,在Nuget中进行安装:

2、修改WinRun2.Web项目中Web.Config配置信息(也可以在WinRun2.Web中也安装Oracle.ManagedDataAccess的依赖包,就会自动在Config中生成Oracle配置信息)



三、创建Oracle数据库Schema
1、首先要保证本地客户端可以链接到Oracle DB服务器,用DBA权限的账号使用Oracle开发工具或SQLPLUS创建新的Schema信息:

2、登录cps/oracle@winrun进行测试,查询所有Table:

3、配置Web.Config中的Oracle链接字符串:
TNS配置:

链接字符串配置:

四、实现数据迁移
1、add-migration:

2、update-database,此处报错了:

3、错误处理,原因是ODP.NET GAC (Global Assembly Cache)中不存在或版本不一致。
Installing Oracle.ManagedDataAccess.dll to GAC resolved my issue. If you installed Oracle Client or Oracle Database on your machine that might be the cause.

注意路径,不同的系统版本(Win10)路径会不一样:"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe" /i Oracle.ManagedDataAccess.dll
4、再次update-database,还是报错了,不过换了一个错误:

4、此错误说明Oracle驱动已OK,链接登录时报错,再次解决该问题:
在链接字符串中增加Persist Security Info=true 即可。

5、再次迁移,成功了!

6、Oracle数据库的改变

迁移支持自增长类型(Oracle使用的Trigger+Sequences实现自增长ID)

参考链接:
http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/dotnet/CodeFirst/index.html#overview
http://www.cnblogs.com/freeliver54/p/6951700.html
http://www.cnblogs.com/yuanbeier/articles/6420621.html
http://blog.csdn.net/yangxuilyx/article/details/52561874
https://stackoverflow.com/questions/32006884/entity-framework-seed-method-exception
http://www.cnblogs.com/haight/p/5600756.html
ABP框架EF6链接Oracle数据库手动迁移的更多相关文章
- 历尽磨难之PL/SQL链接Oracle数据库
说起来都是泪啊,上司布置的任务需要远程连接Oracle数据库,说实话这又是我人生中的第一次.我听到以后觉得不是什么大问题,然而我错了..错的很厉害! 我搞了一天一夜才弄好,这里面原因有很多,大体来讲还 ...
- 关于vs2008使用oracleclient链接oracle数据库报报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用
用vs2008链接oracle数据库出现问题,报错OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用,从网上找了好久方法,有两种oracle客户端文件权限,和运行vs2008以管理 ...
- 有关.NET链接Oracle数据库,使用连接池pooling=true时问题
.net链接oracle数据库时,当链接字符串中pooling=true时,视图结构变更时程序报错问题,还请高手指教 现象: 链接字符串: 注意:这里pooling=true: 测试视图: 执行的SQ ...
- Oracle 远程链接oracle数据库服务器的配置
远程链接oracle数据库服务器的配置 by:授客 QQ:1033553122 原理: 一.Oracle客户端与服务器端的通讯机制 1.OracleNet协议 如下图所示,Oracle通过Oracle ...
- 链接oracle数据库 生成表对应的javabean
package com.databi.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOExc ...
- Java JDBC链接Oracle数据库
package com.test.test; import java.io.FileInputStream;import java.io.FileNotFoundException;import ja ...
- python链接oracle数据库以及数据库的增删改查实例
初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...
- [转帖]亚马逊彻底去掉 Oracle 数据库:迁移完成
亚马逊彻底去掉 Oracle 数据库:迁移完成 https://mp.weixin.qq.com/s/KFonq8efDZ5K6x4YzIVbbg 云头条的信息挺不错的.. 2019 年 10 月 1 ...
- C# 的EF框架怎么连接Oracle数据库
安装odp.net ODP.NET你不需要安装Oracle,不需要配置oracle.key文件,不需要配置TnsNames.Ora文件 不需要配置环境变量:完全的傻瓜式的在没有安装oracle数据库或 ...
随机推荐
- Leap Motion颠覆操控体验的超精致手势追踪技术【转】
转自:http://www.cnblogs.com/emouse/archive/2013/02/28/2936689.html 先来看两段简介视频: 看了介绍视频后,对如此次超高精度的手势追踪非常好 ...
- Jquery实现下拉列表左右选择
知识点: jquery 的 click dbclick 事件 appendTo方法 <!DOCTYPE html> <html> <head> <met ...
- CentOS 7.0 服务管理 – systemctl 命令
转载自:http://linux.it.net.cn/CentOS/fast/2014/0720/3212.html CentOS 7.0中已经没有service命令,而是启用了systemctl服务 ...
- bzoj 1305: [CQOI2009]dance跳舞
题目链接 bzoj 1305: [CQOI2009]dance跳舞 题解 男,女生拆点A1A2,B1B2,拆成两点间分别连容量为K的边,限制与不喜欢的人跳舞的数量 A1连接源点容量为x,B1连接汇点容 ...
- 六. 异常处理6.try语句的嵌套
Try语句可以被嵌套.也就是说,一个try语句可以在另一个try块内部.每次进入try语句,异常的前后关系都会被推入堆栈.如果一个内部的try语句不含特殊异常的catch处理程序,堆栈将弹出,下一个t ...
- 安裝jpeg-6b png error错误解决方法
安裝jpeg-6b png error错误解决方法 默认安裝jpeg-6b shell> wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar. ...
- Android Developer -- Bluetooth篇 开发实例之四 API详解
http://www.open-open.com/lib/view/open1390879771695.html 这篇文章将会详细解析BluetoothAdapter的详细api, 包括隐藏方法, 每 ...
- NSPredicate谓词查询
Cocoa提供了一个类NSPredicate类,该类主要用于指定过滤器的条件,该对象可以准确的描述所需条件,对每个对象通过谓词进行筛选,判断是否与条件相匹配.谓词表示计算真值或假值的函数. NSPre ...
- [置顶]
kubernetes--Init Container
概念 Init Container就是做初始化工作的容器.可以有一个或多个,如果有多个,这些 Init Container 按照定义的顺序依次执行,只有所有的InitContainer 执行完后,主容 ...
- C++STL中的向量vector
#include<iostream>#include<vector>#include<algorithm>using namespace std;typedef v ...