v9.0.0
What's Changed
- Update TFMs and reorganize solution. by @fiseni in #439
- Revise EF Core dependencies per TFM. by @fiseni in #449
- Refactor specification constructors as public. by @fiseni in #431
- Remove IEntity contract. by @fiseni in #432
- Reduce the size of specifications and avoid unnecessary memory allocations by @fiseni in #441
- Fix InMemory SearchExtension bug by @fiseni in #391
- Update and improve the builder infrastructure. by @fiseni in #442
- Improve search validator and in-memory evaluator. by @fiseni in #443
- Optimize the search EF evaluator. by @fiseni in #444
- Optimize include evaluators. by @fiseni in #447
- Simplify and minimize expression containers. by @fiseni in #448
- Add TagWith and IgnoreAutoIncludes features. by @fiseni in #451
- Add WithCacheKey extensions. by @fiseni in #452
- 397 make fields and methods protected by @eldamir in #398
- Update repository methods. by @fiseni in #450
- Refactor the test suite by @fiseni in #437
- Update GitHub workflows to use Linux hosts. by @fiseni in #440
- Update Readme files. by @fiseni in #453
- Add tests by @fiseni in #454
- Prepare for publish, version 9.0.0 by @fiseni in #455
New Contributors
Full Changelog: v8.0...v9.0.0
Breaking Changes
The "standard" use of the library remains fairly intact.
- The obsolete
GetBySpecrepository methods are removed. - The
IEntityinterface is removed. - The
Select/SelectManyare applied at the end of the chain or in a separate Query clause. These extension methods return void and no further chaining is possible.
In this version, we refactored the internals and the building blocks significantly. The "advanced" use cases are affected by these changes. Users who have custom extensions or have been relying on the internals need to migrate accordingly.
- The expression collections no longer are initialized to a new
List<T>by default and will returnEnumerable.Empty<T>if empty. - The default value for
TakeandSkipproperties no longer isnull. They're updated to a non-nullableinttype with a default value of-1. - The specification constructors no longer accept
IInMemorySpecificationEvaluatorandISpecificationValidatorparameters. The properties are still defined as virtual and can be overridden. - The builder infrastructure is refactored to accommodate better flow for specs with projections. All extensions should be written for both
ISpecificationBuilder<T>andISpecificationBuilder<T, TResult>builders. - The
OrderedSpecificationBuilderandCacheSpecificationBuilderare removed. - The in-memory
SearchEvaluatoris renamed toSearchMemoryEvaluator. - The
IncludeEvaluator.DefaultandIncludeEvaluator.Cachedsingleton instances are removed. Instead, use theIncludeEvaluator.Instance. - The
SpecificationEvaluatorno longer acceptsbool cacheEnabledparameter. The caching is applied by default wherever necessary. - The
EntityType,PropertyType, andPreviousPropertyTypeare removed fromIncludeExpressionInfo. - The
UpdateandDeleterepository methods returnTask<int>(the affected rows).