博客
关于我
[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 工具v简介
    查看>>
    Python编程入门指南:从零开始探索编程的奇妙世界
    查看>>
    python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
    查看>>
    Python 常见的错误类型和继承关系
    查看>>
    python 常量_零基础学Python系列之一:Python的变量与常量
    查看>>
    Python 并发编程
    查看>>
    Python编程入门基础及高级技能、Web开发、数据分析和机器学习与人工智能
    查看>>
    python 序列化操作
    查看>>
    Python 开发者,这 7 个 VS Code 插件极力推荐
    查看>>
    python手把手视频_硬货 | 手把手带你构建视频分类模型(附Python演练))
    查看>>
    python 录音左右声道_Python分离立体声wav压缩文件的左右声道
    查看>>
    Python 循环异或对文件进行加解密
    查看>>
    Python开发环境搭建(附VMware安装包及虚拟机环境)
    查看>>
    python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
    查看>>
    Python 快速下载依赖
    查看>>
    python实现非参数统计的Cochran检验 (附完整源码)
    查看>>
    python 怎么验证是否安装成功 scrapy
    查看>>