ABP框架之——数据访问基础架构

几乎所有的业务应用程序都要适用一种数据库基础架构,用来实现数据访问逻辑,以便从数据库读取或写入数据,我们还需要处理数据库事务,以确保数据源中的一致性。

ABP框架可以与任何数据库兼容,同时它提供了EF Core和MongoDB的内置集成包。您将通过定义DbContext类、将实体映射到数据库表、实现仓储库以及在有实体时部署加载相关实体的不同方式,学习如何将EF Core与ABP框架结合使用。您还将看到如何将MongoDB用作第二个数据库提供程序选项。

本章介绍了ABP的基本数据访问架构,包括以下主题:

  • 定义实体
  • 定义D库
  • EF核心集成
  • 了解UoW

ABP通过接口和基类来标准化实体的定义

1 定义实体

1.1 聚合根类(AggregateRoot)

聚合一般包括多个实体或者值对象,聚合根可以理解为根实体或者叫主实体。聚合的概念我们会在后面第10节的DDD会详细讲到,这里只是做个大概了解。

在ABP框架中,您可以从一个AggregateRoot类派生来定义主实体和聚合根,BasicAggregateRoot是定义聚合根的最简单的类。
以下示例实体类派生自BasicAggregateRoot类:

namespace FormsApp
{
    public class Form : BasicAggregateRoot<Guid> //
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public bool IsDraft { get; set; }
        public ICollection<Question> Questions { get; set; }
    }
}

BasicAggregateRoot只是将Id属性定义为PK,并将PK类型作为泛型参数。在本例中,Form的PK类型是Guid。只要底层数据库支持,就可以使用任何类型作为PK(例如int, string等)。

还有其他一些基类可以从中派生聚合根,如下所述:

  • AggregateRoot 有其他属性来支持乐观并发和对象扩展特性
  • CreationAuditedAggregateRoot 继承自 AggregateRoot类,并添加 CreationTime (DateTime) 和 CreatorId (Guid) 属性来存储创建审核信息。
  • AuditedAggregateRoot 继承* CreationAuditedAggregateRoot类,并添加 LastModificationTime (DateTime) 和LastModifierId (Guid)属性来存储修改审核信息。
  • FullAuditedAggregateRoot继承自AuditedAggregateRoot类,并添加 DeletionTime (DateTime) 和 DeleterId (Guid) 属性来存储删除审核信息。它还通过实现ISoftDelete接口添加了IsDeleted (bool),实现实体软删除。

1.2 实体类(Entity)

Entity基类类似于AggregateRoot类,但它们用于子集合实体,而不是主(根)实体。例如,上面的Form聚合根示例包含一系列问题子实体集合,它派生自实体类,如以下代码段所示:

public class Question : Entity<Guid> //
{
    public Guid FormId { get; set; }
    public string Title { get; set; }
    public bool AllowM
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值