项目

BLOB存储数据库提供程序

BLOB存储数据库提供程序可将二进制大对象(BLOB)存储在关系型或非关系型数据库中。

目前已实现两种数据库提供程序:

请先阅读 BLOB存储文档 了解如何使用BLOB存储系统。本文档仅说明如何配置容器以使用数据库作为存储提供程序。

安装指南

自动安装

若基于 应用启动模板 创建解决方案,可使用abp add-module CLI命令 自动添加相关包至解决方案。

在包含解决方案(.sln)文件的目录中打开命令提示符(终端),运行以下命令:

abp add-module Volo.Abp.BlobStoring.Database

此命令会将所有NuGet包添加至解决方案对应层级。若使用EF Core,还将添加必要配置,创建新数据库迁移并更新数据库。

手动安装

该提供程序定义的所有NuGet包如下:

由于存在依赖关系,您只需根据需求安装Volo.Abp.BlobStoring.Database.EntityFrameworkCore或Volo.Abp.BlobStoring.Database.MongoDB包。

安装后,请为相关模块添加DepenedsOn特性。以下是上述NuGet包定义的模块类列表:

  • BlobStoringDatabaseDomainModule
  • BlobStoringDatabaseDomainSharedModule
  • BlobStoringDatabaseEntityFrameworkCoreModule
  • BlobStoringDatabaseMongoDbModule

每当向项目添加NuGet包时,请同时添加模块类依赖。

若使用EF Core,还需配置迁移DbContext以将BLOB存储表添加至数据库架构。在OnModelCreating方法中调用builder.ConfigureBlobStoring()扩展方法,将映射包含到DbContext中。随后可使用标准Add-MigrationUpdate-Database命令在数据库中创建必要表。

配置说明

连接字符串

若使用 Default 默认连接字符串,无需额外配置。

如需为 BLOB 存储使用独立数据库,请在配置文件( appsettings.json )中使用 AbpBlobStoring 作为 连接字符串 名称。此种情况下,请参阅 EF Core迁移文档 了解如何为指定模块创建并使用不同数据库。

容器配置

若仅使用数据库存储提供程序,无需手动配置(系统将自动完成)。若使用多个存储提供程序,则可能需要手动配置。

配置在模块的 ConfigureServices 方法中完成,具体说明参见 BLOB存储文档

示例:配置默认使用数据库存储提供程序

Configure<AbpBlobStoringOptions>(options =>
{
    options.Containers.ConfigureDefault(container =>
    {
        container.UseDatabase();
    });
});

关于为特定容器配置此提供程序的详情,请参阅 BLOB存储文档

补充信息

建议使用 BLOB存储服务 来操作BLOB存储系统。但若需直接操作数据库表/实体,可参考以下信息:

实体定义

本模块定义的实体:

  • DatabaseBlobContainer(聚合根)代表数据库中存储的容器
  • DatabaseBlob(聚合根)代表数据库中的BLOB对象

关于实体和聚合根的概念,请参阅实体文档

仓储接口

  • IDatabaseBlobContainerRepository
  • IDatabaseBlobRepository

也可使用IRepository<DatabaseBlobContainer, Guid>IRepository<DatabaseBlob, Guid>利用IQueryable的强大功能。详见仓储文档

其他服务

  • DatabaseBlobProvider是实现数据库BLOB存储的核心服务。若需通过依赖注入覆盖/替换该服务(请注意不要替换IBlobProvider接口,而是替换DatabaseBlobProvider类)
在本文档中