所以我的问题与这个问题非常相关:使用存储库和实体框架的领域事件中的实体持久性?
编辑:关于该主题的更好的讨论也在这里:在哪里引发依赖于持久性的域事件 - 服务、存储库或 UI?
但是,假设我采用了正确的方法,我的问题会更加简单和技术性。
假设我有以下项目:
MyDomainLayer -> very simple classes, Persitence Ignorance, a.k.a POCOs
MyInfrastructureLayer -> includes code for repositories, Entity Framework
MyApplicationLayer -> includes ASP.Net MVC controllers
MyServicesLayer -> WCF-related code
MyWebApplication -> ASP.Net MVC (Views, Scripts, etc)
引发事件时(例如,已授予组成员资格),则应做两件事(在两个不同的层中):
- 持久化数据(在数据库中插入新的组成员记录)
- 为相关用户创建通知(与 UI 相关)
我将举一个我在简介中写的最后一个参考的简单示例:
领域层有以下代码:
public void ChangeStatus(OrderStatus status)
{
// change status
this.Status = status;
DomainEvent.Raise(new OrderStatusChanged { OrderId = Id, Status = status });
}
假设通风处理程序位于 MyApplicationLayer 中(以便能够与服务层对话)。它有以下代码:
DomainEvent.Register<OrderStatusChanged>(x => orderStatusChanged = x);
线入是如何发生的?我猜是结构图,但是这个输入代码看起来如何呢?