AgentSkillsCN

scaffold-event-projection

为 1:1 事件转换或副作用创建 Marten 事件投影(为每个事件生成独立的文档)。

SKILL.md
--- frontmatter
name: scaffold-event-projection
description: Create a Marten Event Projection for 1:1 event transformation or side-effects (creating separate documents per event).

Follow this guide to create a Event Projection in Marten. This is best for flattening events into queryable documents (1 event -> 1 document) or copying data to other tables.

  1. Define the Projection Class

    • Create a class in src/BookStore.ApiService/Projections/
    • Base Class: EventProjection
    • Template: templates/Projection.cs
  2. Configure in Marten

    • Open src/BookStore.ApiService/Infrastructure/Extensions/MartenConfigurationExtensions.cs
    • Register:
      csharp
      options.Projections.Add<AuditLogProjection>(ProjectionLifecycle.Async);
      
  3. Use Cases

    • History tables
    • Audit logs
    • Flattening stream data for reporting/analytics (without aggregation)

Related Skills

  • /scaffold-multi-stream-projection: For aggregating data.