Skip to content

Repository or ActiveEntity

bITdevKit supports repositories and ActiveEntity. Repositories expose persistence through an injected dependency. ActiveEntity exposes entity-scoped persistence methods backed by a configured provider.

Choose Repository when

  • the application layer must control query composition
  • different persistence implementations need separate contracts
  • workflows span multiple entity types
  • operations require database-specific APIs

For details, see Domain Repositories.

Choose ActiveEntity when

  • operations belong to one entity type
  • one configured provider can serve that entity type
  • the entity API should expose common persistence operations directly
  • generated specifications or the query DSL cover the required queries

For details, see ActiveEntity.

Comparison

Concern Repository ActiveEntity
Dependency Injected repository interface Static entity methods backed by a provider
Query composition Repository methods and specifications Entity methods, generated specifications, and query DSL
Persistence contracts Supports separate interfaces and implementations Uses one configured provider per entity type
Cross-entity operations Can be expressed through application services and repository contracts Belong in an application service, repository, or database API
Shared capabilities Typed IDs, domain events, specifications, paging, and EF Core mapping Typed IDs, domain events, specifications, paging, and EF Core mapping

Decision rule

Choose Repository when the application layer needs explicit persistence dependencies or database-specific contracts.

Choose ActiveEntity for entity-scoped operations that fit one provider. A module can use both patterns.