AggregateRoot
Base class for aggregate roots with domain event support.
Concept
An Aggregate Root is a DDD pattern that:
- Defines transaction boundaries
- Is the only entry point for modifications
- Ensures aggregate consistency
- Raises domain events
Properties
| Property | Type | Description |
|---|---|---|
| DomainEvents | IReadOnlyCollection<DomainEvent> | Pending events |
Methods
| Method | Description |
|---|---|
| AddDomainEvent(DomainEvent) | Adds event to collection |
| RemoveDomainEvent(DomainEvent) | Removes specific event |
| ClearDomainEvents() | Clears all pending events |
| RaiseDomainEvent(DomainEvent) | Alias for AddDomainEvent |
Usage
csharp
public class Order : AggregateRoot
{
public void Complete()
{
Status = OrderStatus.Completed;
RaiseDomainEvent(new OrderCompletedEvent(Id));
}
}TenantScopedAggregateRoot
For multi-tenant aggregate roots:
csharp
public class Invoice : TenantScopedAggregateRoot
{
public Invoice(Guid tenantId) : base(tenantId) { }
}