为ABP框架配置数据库
在 abpbase.database
中,通过 nuget 添加以下几个库:
版本都是 1.9.0-preview0917,你可以使用最新版本的。
创建标准的 efcore 数据库上下文
在 abp 中,efcore 上下文类需要继承 abpdbcontext<t>
,整体编写方法跟继承 dbcontext<t>
一致 ,接下来我们将一步步来讲解在 abpbase
中如何添加 efcore 功能。
连接字符串
abp 中,可以在上下文类加上一个 connectionstringname
特性,然后在配置服务时,abp 会自动为其配置连接字符串。
default
是一个标识,你也可以填写其他字符串标识。
定义隔离的上下文
首先,我们在 abpbase.database
模块中,创建两个文件夹:
basedata
目录用来存放基础表结构的上下文,extensiondata
用来存放可能会拓展或者经常变动的表结构。
在 basedata 中创建一个 abpbasedatacontext
类,其内容如下:
在 extensiondata 中也创建一个相同的 abpbasedatacontext
类,其内容如下:
分部类,前者用于定义那些非常基础的,程序核心的实体(表)以及映射。而后者定义后续可能多次修改的,设计时感觉有设计余地的。
多数据库支持和配置
这里我们将对上下文进行配置和注入,使得程序能够支持多数据库。
在 abpbase.domain.shared
项目中,创建一个枚举,其内容如下:
再创建一个 wholeshared
类,其内容如下:
然后我们在 abpbasedatabasemodule
模块中的 configureservices
函数里面添加依赖注入:
这里不需要配置数据库连接字符串,后面可以通过 abp 的一些方法来配置。
配置上下文连接字符串
配置多数据库支持:
这样就完成了对 efcore 的多数据库配置了。
下面我们来使用类似的方法配置 freesql。
freesql 配置服务
首先,freesql 里面有多种配置方式,例如 dbcontext,读者可以到 wiki 去学习 freesql
:
https://github.com/dotnetcore/freesql/wiki/%e5%85%a5%e9%97%a8
笔者这里使用的是 “非正规” 的设计方式,哈哈哈哈。
在 basedata
目录中,创建一个 freesqlcontext
类,其内容如下:
extensiondata 目录中,创建 freesqlcontext
类 如下:
然后在 abpbasedatabasemodule
的 configureservices
函数中添加注入服务:
通过以上步骤,我们的 abp 就可以支持多数据库了,efcore + freesql,并且将将表分级隔离维护。
到此这篇关于为abp框架配置数据库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
为ABP框架配置数据库
-
在数据库镜像中将SQL Server Express版配置为SQL见证服务器
-
mybatis框架中,使用databaseIdProvider来配置支持多数据库的支持
-
现有web系统替换成Spring Boot2框架 之3 配置数据库驱动,事务控制 spring boot2数据库事务控制
-
Java数据库连接池的几种配置方法(以MySQL数据库为例)
-
Java数据库连接池的几种配置方法(以MySQL数据库为例)
-
Yii框架实现多数据库配置和操作的方法
-
Yii框架实现多数据库配置和操作的方法
-
Mybatis框架实体类字段与数据库表字段不一致导致查询该字段的值一直为null
-
PHP5.3为Yii PHP框架配置php pdo mysql不成功的解决方案