领域事件,是领域内发生的事件引发别的操作,其他的类可以订阅这是事件。
接着上一篇,在testOrder 上实现一个接口 IEventHandler<EntityCreatingEventData<TestOrder>>
就是说TestOrder 这个类有Creating 发生的时候,就会引发这个事件的接口的执行。 public class Test : AggregateRoot, ICreationAudited,IEventHandler<EntityCreatingEventData<TestOrder>> { [NotMapped]
public class Test : AggregateRoot, ICreationAudited,IEventHandler<EntityCreatingEventData<TestOrder>>
{
public IRepository<Test> _repository { get; set; }
public long? CreatorUserId { get; set; }
public DateTime CreationTime { get; set; }
public string Name { get; set; } public string Remark { get; set; } public void Create() { this.Name = "gg"; _repository.Insert(this); } public void HandleEvent(EntityCreatingEventData<TestOrder> eventData) { throw new NotImplementedException(); }
}
public class TestOrder : AggregateRoot, ICreationAudited { [NotMapped] public IRepository<TestOrder> _repository { get; set; } public long? CreatorUserId { get; set; } public DateTime CreationTime { get; set; } public string TestOrderName { get; set; } public string TestOrderRemark { get; set; } public void Create() { this.TestOrderName = "ggsss"; _repository.Insert(this); }
TestOrder 的_repository.Insert(this); 执行的之后,也就是工作单元保存完毕,会触发领域事件的执行(Test 的HandleEvent)。这是默认事件。