ABP动态配置数据库连接 Oracle11g数据库

ABP的仓储关于数据库连接字符串的配置是从web.config(app.config)的connectionStrings读取的。

我想实现的功能是使用Consul的KV加密存储Oracle数据库的连接字符串,在ABP的应用层动态获取。

采用的ABP版本4.7,.Net Famework 4.61,Oracle 数据库11.2,vs2019,Win7。

尝试过 [DbConfigurationType(typeof(DapperDbContextConfiguration3))]依赖,使用DbConfiguration的SetProviderFactory,SetProviderServices,结果失败。提示需要连接SQLServer数据库,然后从DataProvider入手,采用IConnectionStringResolver或DefaultConnectionStringResolver还是失败。

解决方案:

ABP提供了Configuration.DefaultNameOrConnectionString来动态配置连接字符串,这个很容易实现运行时配置。

在应用层模块中,任意模块中都可以。

public override void PreInitialize()
        {

//或者使用Consul的方式从配置中心获取
          Configuration.DefaultNameOrConnectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.19.19.188)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dacong)));User ID=dacong;Password=dacong@qq.com;"

}

关键还是要与*.config文件进行配合,默认生成的defaultConnectionFactory是SQL Server数据库的,即使你改对了Configuration.DefaultNameOrConnectionString,运行时默认还是采用工厂方法创建SQL server的连接,注定失败。需要把defaultConnectionFactory换成Oracle的。

正确的配置如下

<configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    <section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </configSections>
  <connectionStrings>
  </connectionStrings>
<entityFramework>
    <defaultConnectionFactory type="Oracle.ManagedDataAccess.EntityFramework.OracleConnectionFactory, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    <providers>
      <provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>
  <oracle.manageddataaccess.client>
    <version number="*">

<edmMappings>
        <edmMapping dataType="number">
          <add name="bool" precision="1" />
          <add name="byte" precision="3" />
          <add name="int16" precision="5" />
          <add name="int32" precision="10" />
          <add name="int64" precision="19" />
        </edmMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>

ABP动态配置数据库连接字符串 Oracle11g数据库相关推荐

  1. WinForm中配置数据库连接字符串

    以前做Winform程序,居然专门做一个界面来配置连接字符串.今天无意中发现:竟然可以直接调用VS.net2005中的配置界面来处理. 使用方法也非常简单: 引用C:\Program Files\Mi ...

  2. mysql连接字符串配置_配置数据库连接字符串ConnectionString

    项目需要做一个方便配置出ConnectionString的工具,但是由于数据源的不同导致配置的属性也会有不同,本来小小的一个工具看很难有切入点. 在网上惊现有人发现可以使用微软的连接字符串配置对话框. ...

  3. mysql odbc 数据库连接字符串_MySQL数据库:如何字符串连接操作?

    不管你是做数据分析,还是网络爬虫.Web 开发.亦或是机器学习,你都离不开要和数据库打交道.数据库基本上是结构化数据的集合,通过数据库可以用各种方式轻松地检索,管理和访问数据.如今,像MySQL 这样 ...

  4. vs mysql连接字符串_vs 数据库连接字符串

    VS2010连接SQLSERVER2008数据库的步骤 1.在要连接数据库的类中使用using namespace System::Data::SqlClient; 将类型引入 2.定义一个连接对象, ...

  5. 运行时修改数据库连接字符串(ConnectionString)

    在vs2005中我们可以很方便的使用"Properties.Settings.Default.anjouConnectionString"这样的形式来获得数据库连接字符串,但是数据 ...

  6. ABP netcore多数据库连接,动态链接字符串

    ABP netcore多数据库连接,动态链接字符串 ABP框架相信大家都有些了解,今天我们来尝试用ABP框架来实现多数据库访问,第二数据库使用动态链接字符串. 前段时间想做一个用ABP框架作为多租户管 ...

  7. java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  8. mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码

    之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...

  9. C# EF动态获取连接字符串的MSDTC配置

    用于需要动态获取链接字符串(比如从配置中心)获取数据源地址然后链接数据库的情形,需要在服务器上配置MSDTC. 以下是动态链接数据库的代码 using (var ctx = new YourDbCon ...

最新文章

  1. linux自动下载ftp文件夹,Linux 下FTP定时执行批量下载文件
  2. python 网站文件下载-python实现下载文件的三种方法
  3. Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
  4. 【Java中级篇】Dom4j解析xml数据
  5. 浅谈line-height
  6. 安卓学习笔记40:基于套接字网络编程
  7. 《设计模式详解》行为型模式 - 模板方法模式
  8. Scrapy 简介及初探
  9. vscode使用Git Graph提交成功,但是仓库没有更新
  10. 一名南京985AI硕士,CSDN博客专家
  11. Eclipse 中 program arguments 与 VM arguments 的区别
  12. 关于解决Win10家庭中文版没有组策略编辑器的问题
  13. LitJson扩展基础类型
  14. RuntimeWarning: invalid value encountered in arccos
  15. 【游戏程序设计】鼠标交互
  16. android 视频、图片混合轮播控件zbanner
  17. contiki 操作教程
  18. 看完这个教程,不怕Xshell中修改字体有困难
  19. jquery 遍历父元素、子元素、兄弟元素
  20. linux7台式机安装失败,台式机安装centos7提示“No Caching mode page found”

热门文章

  1. LaTeX argmin argmax 下标使用方法
  2. 全网最zui面zui详细关于ICP许可证办理指南
  3. 两台地磅改造称重系统需要用什么材料设备
  4. Mysql之IN 和 Exists 用法
  5. 不一样的Python代码写法,让你写出一手漂亮的代码
  6. 软件工程招聘c语言笔试,嵌入式软件工程师笔试题
  7. html 切换盘符,盘符是什么
  8. Nodejs安装node_modules
  9. IP分片与TCP分段
  10. Mac OS 手机投屏插件Vysor Pro破解