ABP动态配置数据库连接字符串 Oracle11g数据库
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数据库相关推荐
- WinForm中配置数据库连接字符串
以前做Winform程序,居然专门做一个界面来配置连接字符串.今天无意中发现:竟然可以直接调用VS.net2005中的配置界面来处理. 使用方法也非常简单: 引用C:\Program Files\Mi ...
- mysql连接字符串配置_配置数据库连接字符串ConnectionString
项目需要做一个方便配置出ConnectionString的工具,但是由于数据源的不同导致配置的属性也会有不同,本来小小的一个工具看很难有切入点. 在网上惊现有人发现可以使用微软的连接字符串配置对话框. ...
- mysql odbc 数据库连接字符串_MySQL数据库:如何字符串连接操作?
不管你是做数据分析,还是网络爬虫.Web 开发.亦或是机器学习,你都离不开要和数据库打交道.数据库基本上是结构化数据的集合,通过数据库可以用各种方式轻松地检索,管理和访问数据.如今,像MySQL 这样 ...
- vs mysql连接字符串_vs 数据库连接字符串
VS2010连接SQLSERVER2008数据库的步骤 1.在要连接数据库的类中使用using namespace System::Data::SqlClient; 将类型引入 2.定义一个连接对象, ...
- 运行时修改数据库连接字符串(ConnectionString)
在vs2005中我们可以很方便的使用"Properties.Settings.Default.anjouConnectionString"这样的形式来获得数据库连接字符串,但是数据 ...
- ABP netcore多数据库连接,动态链接字符串
ABP netcore多数据库连接,动态链接字符串 ABP框架相信大家都有些了解,今天我们来尝试用ABP框架来实现多数据库访问,第二数据库使用动态链接字符串. 前段时间想做一个用ABP框架作为多租户管 ...
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码
之前写过一篇博客<Spring+Mybatis+Mysql搭建分布式数据库访问框架>描述如何通过Spring+Mybatis配置动态数据源访问多个数据库.但是之前的方案有一些限制(原博客中 ...
- C# EF动态获取连接字符串的MSDTC配置
用于需要动态获取链接字符串(比如从配置中心)获取数据源地址然后链接数据库的情形,需要在服务器上配置MSDTC. 以下是动态链接数据库的代码 using (var ctx = new YourDbCon ...
最新文章
- linux自动下载ftp文件夹,Linux 下FTP定时执行批量下载文件
- python 网站文件下载-python实现下载文件的三种方法
- Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
- 【Java中级篇】Dom4j解析xml数据
- 浅谈line-height
- 安卓学习笔记40:基于套接字网络编程
- 《设计模式详解》行为型模式 - 模板方法模式
- Scrapy 简介及初探
- vscode使用Git Graph提交成功,但是仓库没有更新
- 一名南京985AI硕士,CSDN博客专家
- Eclipse 中 program arguments 与 VM arguments 的区别
- 关于解决Win10家庭中文版没有组策略编辑器的问题
- LitJson扩展基础类型
- RuntimeWarning: invalid value encountered in arccos
- 【游戏程序设计】鼠标交互
- android 视频、图片混合轮播控件zbanner
- contiki 操作教程
- 看完这个教程,不怕Xshell中修改字体有困难
- jquery 遍历父元素、子元素、兄弟元素
- linux7台式机安装失败,台式机安装centos7提示“No Caching mode page found”