using DD.Persistence.Models; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using DD.Persistence.Database.Repositories; namespace DD.Persistence.Database.RepositoriesCached; public class SchemePropertyCachedRepository : SchemePropertyRepository { private readonly IMemoryCache memoryCache; public SchemePropertyCachedRepository(DbContext db, IMemoryCache memoryCache) : base(db) { this.memoryCache = memoryCache; } public override async Task AddRange(DataSchemeDto dataSourceSystemDto, CancellationToken token) { await base.AddRange(dataSourceSystemDto, token); memoryCache.Set(dataSourceSystemDto.DiscriminatorId, dataSourceSystemDto); } public override async Task Get(Guid discriminatorId, CancellationToken token) { var result = memoryCache.Get(discriminatorId) ?? await base.Get(discriminatorId, token); return result; } }