Skip to content

Latest commit

 

History

History
40 lines (32 loc) · 2.07 KB

File metadata and controls

40 lines (32 loc) · 2.07 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

3.0.0 - 2026-03-18

Added

  • New fluent .Cacheable() API replacing ToListCachedAsync/FirstOrDefaultCachedAsync etc.
  • CacheableQuery<T> with ToListAsync, FirstOrDefaultAsync, SingleOrDefaultAsync, CountAsync, AnyAsync
  • Fluent options builder: .Expire(), .SlidingExpiration(), .WithKey(), .WithTags(), .SkipIf(), .UseTarget(), .IgnoreContext()
  • Multi-tenant cache isolation via ICacheContextProvider
  • IgnoreContext() option for global (tenant-independent) cache entries
  • Context-aware invalidation: only invalidates current tenant + global entries
  • ClearContextAsync() to clear cache for current tenant only
  • ClearAllAsync() to clear all cache entries across all providers
  • Manual invalidation: Cache.InvalidateAsync<T>(), Cache.InvalidateByTagAsync(), Cache.InvalidateByTagsAsync()
  • Redis provider with atomic tag operations via StackExchange.Redis
  • Circular reference handling (ReferenceHandler.Preserve) in Redis serialization
  • Multi-provider support (different providers for single items, collections, scalars)
  • ICacheProviderFactory for multi-provider scenarios
  • Demo project with Docker Compose, PostgreSQL, and integration tests

Changed

  • Consolidated from 4 packages (CachedQueries.Core, .Linq, .EntityFramework, .DependencyInjection) into 2 (CachedQueries, CachedQueries.Redis)
  • Modernized to .NET 8.0 / 9.0 with multi-targeting
  • Replaced Package.nuspec with SDK-style .csproj packaging
  • SourceLink, deterministic builds, symbol packages (.snupkg)
  • CI: GitHub Actions with Coveralls coverage reporting

Removed

  • Legacy 4-package architecture
  • Package.nuspec (replaced by .csproj metadata)