欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

为ABP框架配置数据库

程序员文章站 2024-03-27 08:45:04
在abpbase.database中,通过 nuget 添加以下几个库:版本都是 1.9.0-preview0917,你可以使用最新版本的。创建标准的 efcore 数据库上下文在 abp 中,efc...

在 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框架配置数据库的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。