Projections
Projection are specialized event listeners used for materializing events published by event sourced aggregates into better usable read models.
Short example
public class TodoReadModelProjector :
EFCoreEntityEventToPocoProjector<Todo, TodoReadModel>
{
public TodoReadModelProjector(IEFCoreCrudRepository repository)
: base(repository)
{
}
private void Apply(IEventMessage<TodoRenamedEvent> ev)
{
Target.Name = ev.Event.Name;
}
}[TablePrefix(NamespacePrefix = "TODOS", ColumnPrefix = "TDO")]
public class TodoReadModel : EntityReadModel
{
public string Text { get; set; }
}[DomainClassId("D8A1F0C6-CD0A-4F66-8181-336AAFE11248")]
public class Todo : EventSourcedAggregateRoot
{
/** CODE OMITTED FOR BREVITY **/
public string Name { get; private set; }
public void Rename(string name)
{
if (Name != name)
{
Publish(new TodoRenamedEvent(name));
}
}
private void Apply(TodoRenamedEvent ev)
{
Name = ev.Name;
}
}Basics
Entity event projectors
POCO (CRUD) read model projectors
Read model base clases
Providers
EF Core
Entity Framework 6
RavenDB
Background technical details
Last updated