一、背景

  ABP的各类文档在网络上已经非常完善了,唯独缺少与oralce相关的资料,ABP官网也未给出一个较好的Oracle解决方案。正好最近在学习ABP相关知识,对ABP源码结构稍算熟悉,花了些时间进行ABP适配Oracle。

二、准备

  ABP官网 下载ABP模板(选择.netframework MVC 版本)

  github 下载源码

  数据库:Oracle 11g

  开发工具:vs2017

三、链接Oracle

  前期工作都准备好后,开搞开搞!!

1、Oracle EF 驱动  

  分别在web和EntityFramework添加oracle ef 引用(install-package Oracle.ManagedDataAccess.EntityFramework),直接安装该包会自动添加ODP.Net引用

2、链接oracle

  oralce依赖添加好后,我们会发现web.config自动添加了oracle连接配置,将我们需要链接的数据库加到上面去(ps:oracle的链接字符必须为完整) 配置好数据库链接后,直接运行程序试试看,出现了如下错误


3、数据迁移

  既然使用了EF,数据迁移必然少不了,通过执行Add-Migration和update-database指令,查看oracle数据库里生成出来的数据表都是区分大小写(注入AbpModules)。通常而言,我们在plsql建数据表,oracle会自动建表名和字段名转为大写
显然code-first生成出来的数据表不是我们想要的,那我们要怎么修改呢?此时,就需要引入源码,进行源码改造。

四、源码改造

1、重写表名和字段名

  将需要的ABP源码引入,并修改对应依赖


  找到ABP.Zero.Common类库,改写实体,通过特性将所有映射到数据库的实体名和属性名改为大写。


  修改完后,通过数据迁移将数据表生成到数据库中,得到如下数据表

2、源码改造

  仅仅只是重写表名和字段名远远达不到我们实际的应用需求,oracle 11g 主键无法自增,ABP默认主键都是int 自增。这导致无法使用ABP默认的权限管理模块,那么我们需要将所有表的主键都修改为string,然后只需要根据程序报错提示进行修改。(ps:主键此时非自增类型,需要赋值)

五、End

  源码改造完后,重新进行数据迁移。运行程序,正常显示登录界面,但无法登录,这是因为数据迁移时,部分种子数据无法正常写入到数据库,暂时手工写入基础数据。输入admin/123qwe后,正常显示主界面,角色管理、租户管理等菜单未显示,跟踪后台发现是权限角色无法取到值,后续待完善。

ABP适配Oracle全过程的更多相关文章

  1. linux虚拟机安装oracle全过程(一)

    起源:为方便系统迁移,导致的不必要的重装软件.故在虚拟机中搭建oracle数据库以及weblogic服务器(所有使用软件及资源链接附在结尾处) 1.安装虚拟机: 1.1.安装vmware 11破解版. ...

  2. 【ABP】从零开始学习ABP_入门介绍

    本文介绍自己入坑ABP的过程,一些ABP的相关文章.QQ群,以及ABP Zero示例项目的运行. 背景 作为一个半路出家学习编程的新人,之前工作中也断断续续写过一些代码,但底层核心一直没机会学习,所以 ...

  3. Abp(.NetCore)开发与发布过程3-部署Ubuntu站点

    以下是笔者在 Ubuntu 16.0-64bit 环境下 发布 ABP(.NetCore)的全过程.特此记录,希望对大家有所帮助. 准备的工具 1.PuTTY(ssh,如果不想每次都用阿里云的远程登录 ...

  4. cassandra 概述

    摘要 本篇文章主要是介绍cassandra与其他NoSQL的区别以及自身的特点与应用场景.在关系数据库我们没必要选择数据库,通常需要适配oracle/mysql/sql server/db2 等多种数 ...

  5. C#代码规范化(代码风格化)的几个函数

    近期由于适配Oracle的缘故,将旺财C#.NET代码生成器增加了风格化的几个函数,具体实现如下功能: 1.转换为Pascal风格,如User_Name/USER_NAME/UserName自动替换下 ...

  6. ABP框架使用Oracle数据库,并实现从SQLServer中进行数据迁移的处理

    ABP框架的数据访问底层是基于EFCore(Entity Framework Core)的,是微软标志性且成熟的ORM,因此它本身是支持多种主流数据库MySQL,SqlServer,Oracle,SQ ...

  7. 测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程

    测试Oracle 11gr2 RAC 非归档模式下,offline drop数据文件后的数据库的停止与启动测试全过程 最近系统出现问题,由于数据库产生的日志量太大无法开启归档模式,导致offline的 ...

  8. Oracle ABP(Autotask Background Process)

    ABP相当于自动任务与调度程序之间的中介,其主要作用是将自动任务转换成Autotask作业,供调度程序执行.同样重要的是,ABP还维护所有任务执行的历史记录.ABP将其专用资料档案库存储在sysaux ...

  9. Apollo的Oracle适配改动

    这几天工作需要使用Apollo配置中心.Apollo唯一的依赖是MySQL数据库,然而公司只有Oracle数据库资源.这里有一个Oracle适配改动的分支,但是它是基于0.8.0版本的Apollo.看 ...

随机推荐

  1. 画PCB

    1.AD16Design中Boardshape没有redefine board shape选项来修改板子的形状:{ 解决办法:在英文输入模式下按“1”键整个界面会变绿,此时就会有redefine bo ...

  2. 项目小程序笔记-登录界面+FPGA管脚分配文件生成

    声明:只是为了记录我遇到的一些问题,其中有我理解错的望勿参考. (1)qt designer设计好窗口 主窗口: 登录窗口: 关于qt designer的使用,大可以百度,很简单的,要注意的是部件的参 ...

  3. vue的学习之路

    一.vs code中,适合vue的前端插件 查看网址:http://blog.csdn.net/caijunfen/article/details/78749766 二.如何使用git从gitub上拉 ...

  4. Oracle EBS数据定义移植工具:Xdf(XML Object Description File)

    转载自:http://www.orapub.cn/posts/3296.html Oracle EBS二次开发中,往往会创建很多数据库对象,如表.同义词.视图等,这些数据库对象是二次开发配置管理内容很 ...

  5. 【转载】ARCHIVE_LAG_TARGET参数的作用(定时切换redo)

    (一)  设置archive_lag_target参数1.      一旦设置了archive_lag_target初始化参数,数据库将会周期性的检查实例的当前重做日志.如果遇到下列情况,实例将会切换 ...

  6. python 二分查找法

    @source_data:数据集 @binary_num:要查找的数 @mid:中间数的键值 def binary_search(source_data,search_num): #传入数据集计算中间 ...

  7. [编译] 2、minGW gcc在windows搭建编译win32程序环境

    1.普通下载一个MinGW程序.安装之后可以直接将MinGW目录拷贝到总工程的tool里面: demo_mesh_common tree -L 2 . ├── app ├── bin ├── buil ...

  8. 包建强的培训课程(14):Android与ReactNative

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. Javascript高级编程学习笔记(44)—— 动态样式

    动态样式 动态样式和昨天的动态脚本一样,都是一种动态引入外部样式(脚本的方式) 由于样式是由 link 元素引入的,所以动态样式自然也就是动态生成link元素插入文档的方式 不过和动态脚本不同的是,动 ...

  10. PHP实现大文件下载

    实现大文件下载的关键在于循环读取字节流 function downloadFile($filename) { //获取文件的扩展名 $allowDownExt = array ( 'rar', 'zi ...