博客
关于我
ABP适配Oracle全过程
阅读量:468 次
发布时间:2019-03-06

本文共 1109 字,大约阅读时间需要 3 分钟。

一、背景

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

二、准备

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

   下载源码
  数据库: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后,正常显示主界面,角色管理、租户管理等菜单未显示,跟踪后台发现是权限角色无法取到值,后续待完善。

转载地址:http://irmbz.baihongyu.com/

你可能感兴趣的文章
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
MySQL 导出数据
查看>>
mysql 将null转代为0
查看>>
mysql 常用
查看>>