BLOB存储数据库提供程序

    有两个数据库提供程序实现;

    如果你已基于应用程序启动模板创建了解决方案,则可以使用 命令将相关软件包自动添加到解决方案中.

    在包含解决方案(.sln)文件的文件夹中打开命令行运行以下命令:

    此命令将所有NuGet软件包添加到解决方案的相应层. 如果使用的是EF Core,它会添加必要的配置,添加新的数据库迁移并更新数据库.

    手动安装

    你可以只安装 Volo.Abp.BlobStoring.Database.EntityFrameworkCoreVolo.Abp.BlobStoring.Database.MongoDB (根据你的偏好),因为它们依赖其他包.

    安装完成后,添加 DepenedsOn 属性到相关.下面是由上面列出的相关NuGet包定义的模块类列表:

    • BlobStoringDatabaseDomainModule
    • BlobStoringDatabaseDomainSharedModule
    • BlobStoringDatabaseEntityFrameworkCoreModule
    • BlobStoringDatabaseMongoDbModule

    如果你正在使用EF Core,还需要配置你的Migration DbContext将BLOB存储表添加到你的数据库. 在 OnModelCreating 方法中调用 builder.ConfigureBlobStoring() 扩展方法来包含到DbContext的映射. 你可以使用标准的 和 Update-Database 命令在数据库中创建必要的表.

    如果你要使用你的 Default 连接字符串,则不需要做任何其他配置.

    如果要将BLOB存储到单独的数据库,请在配置文件(appsettings.json)中将 AbpBlobStoring 用作连接字符串名称. 请阅读文档了解如何为所需模块创建和使用其他数据库.

    配置容器

    如同所述,配置是在模块类的 ConfigureServices 方法完成的.

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

    1. Configure<AbpBlobStoringOptions>(options =>
    2. options.Containers.ConfigureDefault(container =>
    3. {
    4. container.UseDatabase();
    5. });

    参阅 学习如何为指定容器配置提供程序.

    它需要使用BLOB存储服务来使用BLOB存储系统. 但是如果要处理数据库表/实体,可以使用以下信息.

    此模块定义的实体:

    • DatabaseBlobContainer (aggregate root) 表示存储在数据库中的容器.
    • DatabaseBlob (aggregate root) 表示数据库中的BLOB.

    仓储

    • IDatabaseBlobContainerRepository
    • IDatabaseBlobRepository

    你还可以使用 IRepositoryIRepository 来获得 IQueryable 能力. 更多信息请参阅仓储文档.

    • DatabaseBlobProvider 是实现数据库BLOB存储提供程序的主要服务,如果你想要通过覆盖/替换它(不要替换 IBlobProvider 接口,而是替换 类).