This repo is a small .NET Aspire sample that hosts a Minimal API, two PostgreSQL databases, and a manual-start worker. It exists mainly to show two EF Core migration patterns side by side.
- Serves a products API backed by
appdb. - Tracks analytics (page views and events) in
analyticsdb. - Demonstrates migrations:
- Pattern 1: dedicated migrator project for
appdb. - Pattern 2: AppHost hosted service for
analyticsdb.
- Pattern 1: dedicated migrator project for
- Includes a manual-start worker that cleans up old analytics data.
Resource dependency map:
AppHost (AspireDemo.AppHost)
|
|-- appdb (Postgres) ----------> API (products)
|-- analyticsdb (Postgres) -----> API (analytics)
|-- analyticsdb (Postgres) -----> Worker (manual start)
|-- DbMigrator (one-shot) ------> appdb (migrations + dev seed)
|-- AppHost HostedService ------> analyticsdb (migrations)
Migration patterns:
Pattern 1: Dedicated migrator
DbMigrator (one-shot) ---> appdb
Pattern 2: Migrations from AppHost
AppHost HostedService ---> analyticsdb
AspireDemo/AspireDemo.AppHost- orchestration and analytics migrations.AspireDemo/AspireDemo.Api- Minimal API for products and analytics.AspireDemo/AspireDemo.DbMigrator- one-shot migrations forappdb; seeds demo data in Development.AspireDemo/AspireDemo.Worker- manual-start cleanup worker foranalyticsdb.AspireDemo/AspireDemo.Data- EF Core DbContexts and migrations.
cd AspireDemo/AspireDemo.AppHost
aspire runNotes:
- Swagger UI is enabled in Development.
- Start the worker manually via the Aspire dashboard.
GET /api/productsGET /api/products/{id}POST /api/productsDELETE /api/products/{id}POST /api/analytics/pageviewPOST /api/analytics/eventGET /api/analytics/pageviewsGET /api/analytics/events?eventName=...