Skip to main content

LMS Repositories and Unit of Work

Summary

No repository interface, aggregate repository, generic repository, application unit-of-work abstraction, or explicit transaction coordinator exists.

Endpoints inject TrainingDbContext and call DbSet/EF query APIs directly. SaveChanges is the local persistence boundary. Normal single-SaveChanges operations participate in the DbContext/provider transaction, including entity, audit/timeline, and staged outbox rows. Document HTTP work is outside that local transaction.

TrainingOutboxMessageStore is a messaging persistence adapter, not a domain repository. The design-time factory creates DbContext for tooling. Direct DbContext usage simplifies the current service but reduces application-layer isolation and unit test substitution.

Requires confirmation

Fine-grained authorization, production ownership, operational governance, and future architectural boundaries require confirmation where not implemented.

Source References

  • microservices/src/training-service/Api/TrainingEndpoints.cs
  • microservices/src/training-service/Infrastructure/TrainingDbContext.cs
  • microservices/src/training-service/Infrastructure/Persistence.cs
  • microservices/src/training-service/Program.cs

See Also

Keywords

  • LMS technical architecture
  • Source-backed implementation

Revision Information

  • Status: Draft
  • Last reviewed: 2026-07-17
  • Review cycle: Quarterly