【ABP学习记录】领域层_实体

实体是DDD(领域驱动设计)的核心概念之一。Eric Evans 是这样描述的“很多对象不是通过它们的属性定义的,而是通过一连串的连续性事件和标识定义的”(引用领域驱动设计一书)。

注:对象不是通过它们的属性来下根本性的定义,而应该是通过它的线性连续性和标识性定义的。所以,实体是具有唯一标识的ID且存储在数据库中。实体通常被映射成数据库中的一个表。

实体类

在ABP中,实体继承自Entity类

public class Person : Entity 
{     
    public virtual string Name { get; set; } 
    public virtual DateTime CreationTime { get; set; } 
	public Person() 
    { 
        CreationTime = DateTime.Now; 
    } 
}

实体类Person 父类Entity具有主键属性Id。所有继承Entity类的子类都将具有主键为Id的属性。
Id的数据类型可以被更改,默认是 int类型。下面示例展示给 Id 定义其它类型。

public class Person : Entity<long> 
{     
	public virtual string Name { get; set; } 
    public virtual DateTime CreationTime { get; set; } 
    public Person() 
    { 
        CreationTime = DateTime.Now; 
    } 
} 

可以设置为Id定义 strin,Guid 或者其它你想要的数据类型。 实体类重写了 equality (==) 操作符用来判断两个实体对象是否相等(主要是判断 Id主键 是否相等),以及 IsTransient()方法来检测当前 Id 的值是否与指定的类型的缺省值相等。

聚合根

领域驱动设计中聚合是一种模式,聚合表示的是一组领域对象(实体和值对象),可被看作是一个单元。例:订单和订单项,这都是单独的对象。可将订单(以及订单项)作为一个聚合来看待。

ABP不强迫使用聚合,可以在你的应用中创建聚合以及聚合根。ABP定义扩展自 Entity 的 AggregateRoot 类,用来创建聚合根实体。

领域事件

聚合根定义 DomainEvents 的集合来产生领域事件。在当前的工作单元完成之前,这些事件被自动的触发。通过扩展 IGeneratesDomainEvents 接口,任何实体都能够产生领域事件。但是,最佳实践是在聚合根中产生领域事件。这就是为什么它被定义在聚合根中而不是实体中。

实体更改事件

当实体被插入,更新或者删除的时候,ABP会自动的触发相应的事件。因此,你可以注册这些事件并执行任何你需要的逻辑。

Entity 实现 IEntity 接口(Entity IEntity接口)。如果你不想从 Entity 类派生,你能直接的实现IEntity 接口。其他实体类也可以实现相应的接口。但是不建议你用这种方式。除非你有一个很好的理由不从 Entity 类派生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要将ABP2数据库的数据复制到ABP2_HIS数据库中,可以使用以下步骤: 1. 创建ABP2_HIS数据库,并在其中创建与ABP2数据库相同的表结构。 2. 使用SQL语句将ABP2数据库中的数据导出为一个SQL脚本。 3. 修改该SQL脚本中的数据库名称为ABP2_HIS,并保存该脚本。 4. 在ABP2_HIS数据库中运行该SQL脚本,将ABP2数据库中的数据复制到ABP2_HIS数据库中。 下面是具体的步骤: 1. 创建ABP2_HIS数据库,并在其中创建与ABP2数据库相同的表结构。 可以使用以下SQL语句创建ABP2_HIS数据库: ``` CREATE DATABASE ABP2_HIS; ``` 在ABP2_HIS数据库中创建与ABP2数据库相同的表结构,可以使用以下命令: ``` mysqldump -u root -p ABP2 > ABP2.sql ``` 2. 使用SQL语句将ABP2数据库中的数据导出为一个SQL脚本。 在命令行窗口中输入以下命令: ``` mysqldump -u root -p ABP2 > ABP2.sql ``` 该命令将ABP2数据库中的数据导出为一个名为ABP2.sql的SQL脚本。 3. 修改该SQL脚本中的数据库名称为ABP2_HIS,并保存该脚本。 打开ABP2.sql文件,并用文本编辑器将其中所有的“ABP2”替换为“ABP2_HIS”。 4. 在ABP2_HIS数据库中运行该SQL脚本,将ABP2数据库中的数据复制到ABP2_HIS数据库中。 在命令行窗口中输入以下命令: ``` mysql -u root -p ABP2_HIS < ABP2.sql ``` 该命令将ABP2.sql文件中的SQL语句在ABP2_HIS数据库中执行,从而将ABP2数据库中的数据复制到ABP2_HIS数据库中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一支一支杨桃枝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值