一、背景

  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. bower学习总结

    1. 安装软件:node-v6.10.3-x64.msi 和 Git-2.13.0-64-bit.exe 在安装git时,需要选择‘Run Git from the Windows Command P ...

  2. 性能测试-----monkey稳定性测试

    我们稳定性测试用的monkey,跑monkey的同时存储log monkey脚本: @echo.@set /p name=请输入你的名字(比如liuyl): set YYYYmmdd=%date:~0 ...

  3. Python在Windows上安装配置测试

    Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 2.x还是3.x 目前,Python ...

  4. C++的学习心得

    由于我们大一就学习的c++,跳过了c语言,VB的学习,在很多方面我们掌握的并不是特别好,在这几种语言中,几乎有时候会产生混淆,通过做大量的c++的题目感觉在题目中应用的最多的就是数组.指针.对类的应用 ...

  5. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  6. 吴恩达机器学习笔记13-正规方程(Normal Equation)

    到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程方法是更好的解决方案.如: 即: 运用正规方程方法求解参数: 注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺 ...

  7. 关键字New,如阴魂不散

    本文是溪源翻译的第一篇技术文章,查看原文,因时间仓促,也许翻译过程措辞不当,还请见谅. 当你使用类似于C#或VisualBasic这种强类型语言,在实例化对象时,你往往会使用New这个关键字.我敢保证 ...

  8. compose函数

    compose函数 在学习redux源码的时候看到了其中的工具函数compose,compose函数的作用就是组合函数,依次组合传入的函数: 后一个函数作为前一个函数的参数 最后一个函数可以接受多个参 ...

  9. HBase——HMaster启动之一(HMaster的构建)

    首先,让我们来到HMaster的main方法.我们今天的流程就从这里开始. 我们需要注意,下图所示的tool的类型就是HMasterCommandLine. 接下来,让我们来到HMasterComma ...

  10. vs2017使用GitHub插件发布项目到github

    几乎每天都从博客园获取新知识,今天才发现我竟然没有博客园的账号,你说气人不.2008年10月就开始在CSDN上写记录,因为CSDN做记录还可以,但记录整个项目就有些捉襟见肘,后来就写Demo做备份到云 ...