Changelog — Vali-Flow
All notable changes to this package are documented here.
Format: Keep a Changelog · Versioning: SemVer
[Unreleased]
[1.3.4] — 2026-04-15
Fixed
- Updated Vali-Flow.Core dependency to 2.0.2 which fixes IsNull/NotNull WHERE 0=1 bug with EF Core GlobalQueryFilter.
[1.3.0]
Changed
ValiFlowEvaluator<T>is now inheritable — removedsealedmodifier to enable clean repository pattern- Repositories can now extend
ValiFlowEvaluator<T>directly instead of using composition
Fixed
- Improved extensibility for repository implementations
[1.1.0]
Added
EvaluatePagedAsync— returnsPagedResult<T>withItems,TotalCount,TotalPages,HasNextPage,HasPreviousPageEvaluateTopByGroupAsync— top-N entities per group keyEvaluateDistinctAsync/EvaluateDuplicatesAsync— distinct and duplicate detection by key selectorEvaluateAggregateAsync— generic aggregation over any numeric selectorEvaluateGroupedAsync,EvaluateCountByGroupAsync,EvaluateSumByGroupAsync,EvaluateMinByGroupAsync,EvaluateMaxByGroupAsync,EvaluateAverageByGroupAsync— full grouped aggregate surfaceExecuteUpdateAsync— bulk in-place update viaExecuteUpdate(no entity load)ExecuteTransactionAsync— wraps multiple operations in a single EF Core transactionBulkInsertAsync,BulkUpdateAsync,BulkDeleteAsync,BulkInsertOrUpdateAsync— high-throughput bulk operations viaEFCore.BulkExtensionsUpsertRangeAsync— batch upsert with configurable key selectorDeleteByConditionAsync— delete by raw predicate without loading entitiesEvaluateGetLastAsync/EvaluateGetLastFailedAsync— last-match retrievalQuerySpecification<T>— fluent spec builder withWithTop,WithPagination,WithOrderBy,AddThenBy,WithValiSortBasicSpecification<T>— simplified spec without ordering/pagination- XML documentation on all public types and members
Changed
ValiFlowEvaluator<T>refactored assealed partial classsplit across focused files (Read, Write, Grouped, Aggregates, Bridge)- Improved exception messages for invalid spec combinations (Top + Pagination, Pagination without OrderBy)
EvaluateAllAsyncandEvaluateAllFailedAsyncmarked[Obsolete]— useEvaluateQueryAsync/EvaluateQueryFailedAsync- License changed from Apache-2.0 to MIT
Fixed
- Thread-safety issues in concurrent evaluator usage
- Cache and DRY violations in
UpsertCoredeferred execution - CS87xx nullable warnings across evaluator and specification classes
[1.0.0] — Initial release
Added
ValiFlowEvaluator<T>— EF Core async evaluator implementingIEvaluatorRead<T>andIEvaluatorWrite<T>BasicSpecification<T>andQuerySpecification<T>— specification pattern with fluent builder API- Read methods:
EvaluateAsync,EvaluateAnyAsync,EvaluateCountAsync,EvaluateGetFirstAsync,EvaluateQueryAsync,EvaluateQueryFailedAsync - Write methods:
AddAsync,UpdateAsync,DeleteAsync,AddRangeAsync,UpdateRangeAsync,DeleteRangeAsync,UpsertAsync,SaveChangesAsync - Interfaces:
IEvaluatorRead<T>,IEvaluatorWrite<T>,ISpecification<T>,IBasicSpecification<T>,IQuerySpecification<T> - EF Core option wrappers:
EfInclude<T,TProperty>,EfOrderBy<T,TProperty>,EfOrderThenBy<T,TProperty> PagedResult<T>— pagination result model- Dependency on
Vali-Flow.Corefor expression tree building (ValiFlow<T>,ValiSort<T>)