10.ABP中的DDD

一、概述

二、使用

2.1 值对象

1.没有标识符,只有属性,且属性不可变
3.不会单独持久化(比如Address值对象不会创建一个Address表来存储的)
4.值对象是否一样时,不管是否同一对象,所有属性相等即相等

2.1.1 值对象事例

ABP提供ValueObject<T>类来创建值对象,同时重写equality (==)成属性相等即相等 代码如下:

public class Address : ValueObject<Address>
{
    //值对象属性不可修改
    public Guid CityId { get; private set; } 
    public string Street { get; private set; }
    public int Number { get; private set; }
    public Address(Guid cityId, string street, int number)
    {
        CityId = cityId;
        Street = street;
        Number = number;
    }
}

2.2 聚合根AggregateRoot

  • AggregateRoot 扩展自 Entity 类,用来创建聚合根实体。
  • 聚合根定义了 DomainEvents 的集合用来产生领域事件。在当前的工作单元完成之前,这些事件被自动的触发。

2.3 领域事件

2.3.1 定义事件源

    public class TaskEventData:EventData
    {
        public string Name { get; set; }
        public TaskEventData(string name)
        {
            this.Name = name;
        }
    }

2.3.2 定义事件

    public class TaskEventHandler : IEventHandler<TaskEventData>, ITransientDependency
    {

        public void HandleEvent(TaskEventData eventData)
        {
            Debug.Write(eventData.Name);
        }
      
    }

2.3.3 调用事件

EventBus.Trigger(new Tasks.TaskEventData("1"));

2.4 实体领域事件

ABP提供了默认的事件源且实体改变时会自动调用相应的事件

  • EntityCreatingEventData<TEntity>
  • EntityCreatedEventData<TEntity>
  • EntityUpdatingEventData<TEntity>
  • EntityUpdatedEventData<TEntity>
  • EntityDeletingEventData<TEntity>
  • EntityDeletedEventData<TEntity>
  //Task实体新增时会自动触发该事件
    public class TaskEventHandler1 : IEventHandler<EntityCreatedEventData<Task>>
                                    , ITransientDependency
    {
        public void HandleEvent(EntityCreatedEventData<Task> eventData)
        {
            Debug.Write(eventData.Entity.Title);
        }
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,956评论 6 13
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,126评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,907评论 19 139
  • 释怀了好像
    单兆阅读 3,621评论 0 50
  • 长假订阅了薛兆丰老师的北大经济学课程。从第一课开始,到今天终于赶到了6月份的课程。那就做个学习的小结吧。 经济学是...
    林中草Amy阅读 3,138评论 1 2

友情链接更多精彩内容