Asset Repositories and Unit of Work
Persistence abstractions
IAssetRepository is declared in Domain and supports get by aggregate identifier, get by compatibility identifier, code existence, add, asset removal, document removal, and IQueryable access. AssetRepository implements it with AssetDbContext and eagerly loads history/documents for aggregate gets.
IUnitOfWork exposes one asynchronous SaveChanges operation. UnitOfWork delegates directly to AssetDbContext. That save boundary persists aggregate state, audit, timeline, document references, and outbox messages together when they are staged before the call. Audit and timeline have application ports and EF adapters. The shared outbox store is implemented locally.
There are no separate repositories for history, audit, timeline, document reference, or processed-event records. No specification abstraction, read repository, transaction coordinator, retry policy, or domain repository implementation outside EF was found. IQueryable in the domain repository port couples callers to LINQ-provider behavior.
Requires confirmation
Production ownership, authorization governance, operational policy, and future architecture require confirmation where the source does not enforce them.
Source References
microservices/src/asset-service/Domain/Repositories.csmicroservices/src/asset-service/Application/Common/Abstractions.csmicroservices/src/asset-service/Infrastructure/Persistence.cs