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
- New fluent
.Cacheable()API replacingToListCachedAsync/FirstOrDefaultCachedAsyncetc. CacheableQuery<T>withToListAsync,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 onlyClearAllAsync()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)
ICacheProviderFactoryfor multi-provider scenarios- Demo project with Docker Compose, PostgreSQL, and integration tests
- 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.nuspecwith SDK-style.csprojpackaging - SourceLink, deterministic builds, symbol packages (.snupkg)
- CI: GitHub Actions with Coveralls coverage reporting
- Legacy 4-package architecture
Package.nuspec(replaced by.csprojmetadata)