ABP成长系列7:数据访问
2024-06-01 16:01:56摘要:一、仓储 仓储模式是ABP框架数据访问层的核心抽象,它提供了一种统一的方式来访问数据源,无论底层使用何种数据库技术(EF Core、MongoDB等)。 接口抽象:框架定义了一系列通用的仓储接口,如 IRepositoryTEntity, TKey。你的领域层和应用层只依赖于这些接口,而不是具体的实现,这严格遵循了DDD的持久化无关原则。 默认实现:ABP为EF、MongoDB和Dapper提供了这些仓储接口的开箱即用的实现。这意味着对于大多数标准的CRUD操作,无需编写任何仓储实现代码。 自定义仓储:对于复杂的查询或特定操作,可以定义自定义的仓储接口(如 ICustomRepository),并在基础设施层(如EntityFrameworkCore项目)中实现它。ABP的依赖注入系统会自动将其注册到容器中。 类关系图 1. 仓储接口体系 ABP定义了一套完整的仓储接口体系,位于Volo.Abp.Domain.Repositories命名空间: //IRepository.cs public interface IRepository { } public interface IRepositoryTEntity : IReadOnlyRepositoryTEntity, IBasicRepositoryTEntity where TEntity : class, IEntity { TaskTEntity FindAsync([NotNull] ExpressionFuncTEntity, bool predicate, bool includeDetails = true, CancellationToken cancellationToken = default); TaskTEntity GetAsync([NotNull] ExpressionFuncTEntity, bool predicate, bool includeDetails = true, CancellationToken cancellationToken = default); Task DeleteAsync([NotNull] ExpressionFuncTEntity, bool predicate, bool autoSave =…… 阅读全文
