Зависит от entity.Id
Невозможно создать систему событий домена перед вызовом SaveChanges()
.
- ASP.NET Boilerplate обнаруживает изменения при вызов
SaveChanges()
. - Рекурсивные события могут вызвать бесконечный цикл - см. # 1616 .
- Объект с
Id
, который не был установлен (автоматически сгенерированный) не может быть идентифицирован.
Если вы зависите от такой системы, то это может быть плохое разделение интересов.
Независимо от entity.Id
Вы можете использовать IEventBus
напрямую.
Триггерное событие:
public class AManager : DomainService, IAManager
{
public void CreateA()
{
var a = new A();
Repository.Insert(a);
EventBus.Trigger(new EntityCreatingBeforeSaveEventData<A>
{
Property = a.SomeProperty // Can pass other properties
});
}
}
public class BManager : DomainService, IBManager
{
// Similar to above
}
Обрабатывать событие:
public class AHandler : IEventHandler<EntityCreatingBeforeSaveEventData<A>>, ITransientDependency
{
public IBManager BManager { get; set; }
public void HandleEvent(EntityCreatingBeforeSaveEventData<A> eventData)
{
var aSomeProperty = eventData.Property;
BManager.CreateB();
}
}