博客
关于我
[Abp 源码分析]七、仓储与 Entity Framework Core
阅读量:442 次
发布时间:2019-03-06

本文共 1834 字,大约阅读时间需要 6 分钟。

Abp框架与EF Core仓储模式详解

Abp框架内置了强大的仓储模式,支持EF Core与Dapper两种数据库连接方式。通用仓储通过注入 IRepository 接口,简化了数据操作流程,无需为每个实体定义单独的仓储实现。以下将详细介绍Abp仓储的定义与实现、EF Core的工作单元以及多数据库支持的实现。


1. Abp仓储的定义与实现

Abp框架的仓储定义位于Domain/Repositories目录下,主要包括以下文件:

  • AbpRepositoryBase.cs:仓储基类,提供基础操作。
  • AutoRepositoryTypesAttribute.cs:用于标记实体的仓储类型,支持自动构建。
  • IRepository.cs:仓储基本接口定义,包含CRUD操作。
  • IRepositoryOfTEntity.cs:默认主键为int的仓储接口。
  • IRepositoryOfTEntityAndTPrimaryKey.cs:用户定义主键的仓储接口。
  • ISupportsExplicitLoading.cs:支持显式加载的仓储接口。
  • RepositoryExtensions.cs:仓储扩展方法库。
  • 1.1仓储接口定义

    主要仓储接口由IRepositoryOfTEntityAndTPrimaryKey<TEntity, TPrimaryKey>定义:

    public interface IRepository
    : IRepository
    where TEntity : IEntity
    { // CRUD方法定义}

    该接口定义了两个泛型参数,要求 TEntity 必须实现 IEntity

    。IRepository
    是默认主键为int的仓储接口。

    1.2仓储实现

    默认仓储实现由EfCoreRepositoryBase<TDbContext, TEntity, TPrimaryKey>提供,内部使用EF Core进行数据库操作。该基类注入IUnitOfWorkManager和IIocResolver,用于控制事务和依赖注入。

    EfCoreRepositoryBase的实现包括:

    • 获取数据库上下文。
    • 获取实体表。
    • 数据库事务和连接管理。
    • CRUD操作实现,如Insert、Update、Delete等。

    2. Entity Framework Core (EF Core)

    EF Core是Abp框架的默认ORM工具,提供强大的数据操作功能。

    2.1工作单元(UnitOfWork)

    Abp框架中的工作单元由EfCoreUnitOfWork实现,注入IocResolver、DbContextProvider等组件。其主要功能包括:

    • 管理数据库事务。
    • 提供数据上下文。
    • 执行事务提交和滚回。

    EfCoreUnitOfWork的实现包括:

    • Get DbContext 方法,返回激活的数据库上下文。
    • BeginTransaction 开始新事务。
    • CommitTransaction 提交事务。
    • RollbackTransaction 滚回事务。

    2.2数据库上下文提供器

    IDbContextProvider接口定义了获取数据库上下文的方法:

    public interface IDbContextProvider
    where TDbContext : DbContext{ TDbContext GetDbContext(); TDbContext GetDbContext(MultiTenancySides? multiTenancySide = null);}

    默认实现由 EfCoreDbContextProvider 提供,通过IocResolver获取UOW,然后调用GetDbContext方法。

    2.3多数据库支持

    Abp框架支持多数据库通过覆盖IConnectionStringResolver实现。具体步骤包括:

  • 定义多个数据库配置。
  • 根据DbContext类型选择相应的数据库连接。
  • 提供多租户支持,基于多个数据库上下文。

  • 3. 总结

    Abp框架通过通用仓储模式简化了数据操作流程,支持EF Core和Dapper两种数据库连接方式。其工作单元和多数据库支持机制确保了高效的事务管理和灵活的数据库配置。

    转载地址:http://vuryz.baihongyu.com/

    你可能感兴趣的文章
    Python 中的离线语音转文本
    查看>>
    Python 中的线程
    查看>>
    Python 中的继承机制是什么样的?
    查看>>
    Python 中的装饰器是什么?
    查看>>
    Python 中的装饰器是如何工作的,有哪些实际应用场景?
    查看>>
    python读excel
    查看>>
    Python 中读取 CSV 文件-ChatGPT4o作答
    查看>>
    python请求html_使用Python请求获取HTML?
    查看>>
    Python 之匿名函数和偏函数
    查看>>
    python 之栈的实现
    查看>>
    python语音播放
    查看>>
    python语言:装饰器原理
    查看>>
    Python 交互式数据可视化详解
    查看>>
    python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
    查看>>
    Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
    查看>>
    Python 从数据库中存储和检索密码的最安全方法
    查看>>
    Python语言及其应用 - 知识点遍历
    查看>>
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>