我想知道在领域服务中是否可以引发领域事件?我有一段用C#编写的代码。当然它可以运行,但从DDD角度来看,它正确吗?
第一个例子与用户删除相关。在我的系统中,账户有多个用户。在用户被删除后,会引发AccountUserRemovedDomainEvent。然后基础设施层中的订阅者处理审计日志管理。它添加适当的日志,描述此操作。
public void RemoveUser(AccountUserEntity user, AccountEntity account)
{
AccountUserRepository.Delete(user);
DomainEvents.Raise(new AccountUserRemovedDomainEvent(user));
}
这是第二个例子。在这种情况下,除了在基础设施层创建审计日志订阅者外,还会向用户发送带有激活链接的电子邮件。
public void SaveAccountUser(AccountUserBasicInformation information, AccountEntity account)
{
var user = Mapper.Map<AccountUserEntity>(information);
account.Users.Add(user);
user.Account = account;
DomainEvents.Raise(new AccountUserAddedDomainEvent(user));
}