BLOB存储数据库提供程序
BLOB存储数据库提供程序可将二进制大对象(BLOB)存储在关系型或非关系型数据库中。
目前已实现两种数据库提供程序:
- Volo.Abp.BlobStoring.Database.EntityFrameworkCore 包专为 EF Core 实现,因此可将BLOB存储于 EF Core支持的任何数据库管理系统中
- Volo.Abp.BlobStoring.Database.MongoDB 包专为 MongoDB 实现
请先阅读 BLOB存储文档 了解如何使用BLOB存储系统。本文档仅说明如何配置容器以使用数据库作为存储提供程序。
安装指南
自动安装
若基于 应用启动模板 创建解决方案,可使用abp add-module CLI命令 自动添加相关包至解决方案。
在包含解决方案(.sln)文件的目录中打开命令提示符(终端),运行以下命令:
abp add-module Volo.Abp.BlobStoring.Database
此命令会将所有NuGet包添加至解决方案对应层级。若使用EF Core,还将添加必要配置,创建新数据库迁移并更新数据库。
手动安装
该提供程序定义的所有NuGet包如下:
- Volo.Abp.BlobStoring.Database.Domain.Shared
- Volo.Abp.BlobStoring.Database.Domain
- Volo.Abp.BlobStoring.Database.EntityFrameworkCore
- Volo.Abp.BlobStoring.Database.MongoDB
由于存在依赖关系,您只需根据需求安装Volo.Abp.BlobStoring.Database.EntityFrameworkCore或Volo.Abp.BlobStoring.Database.MongoDB包。
安装后,请为相关模块添加DepenedsOn特性。以下是上述NuGet包定义的模块类列表:
BlobStoringDatabaseDomainModuleBlobStoringDatabaseDomainSharedModuleBlobStoringDatabaseEntityFrameworkCoreModuleBlobStoringDatabaseMongoDbModule
每当向项目添加NuGet包时,请同时添加模块类依赖。
若使用EF Core,还需配置迁移DbContext以将BLOB存储表添加至数据库架构。在OnModelCreating方法中调用builder.ConfigureBlobStoring()扩展方法,将映射包含到DbContext中。随后可使用标准Add-Migration和Update-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对象
关于实体和聚合根的概念,请参阅实体文档
仓储接口
IDatabaseBlobContainerRepositoryIDatabaseBlobRepository
也可使用IRepository<DatabaseBlobContainer, Guid>和IRepository<DatabaseBlob, Guid>利用IQueryable的强大功能。详见仓储文档
其他服务
DatabaseBlobProvider是实现数据库BLOB存储的核心服务。若需通过依赖注入覆盖/替换该服务(请注意不要替换IBlobProvider接口,而是替换DatabaseBlobProvider类)
抠丁客


