Skip to content

Releases: ardalis/Specification

v9.0.0

12 Mar 13:10
885782d
Compare
Choose a tag to compare

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 GetBySpec repository methods are removed.
  • The IEntity interface is removed.
  • The Select/SelectMany are 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 return Enumerable.Empty<T> if empty.
  • The default value for Take and Skip properties no longer is null. They're updated to a non-nullable int type with a default value of -1.
  • The specification constructors no longer accept IInMemorySpecificationEvaluator and ISpecificationValidator parameters. 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> and ISpecificationBuilder<T, TResult> builders.
  • The OrderedSpecificationBuilder and CacheSpecificationBuilder are removed.
  • The in-memory SearchEvaluator is renamed to SearchMemoryEvaluator.
  • The IncludeEvaluator.Default and IncludeEvaluator.Cached singleton instances are removed. Instead, use the IncludeEvaluator.Instance.
  • The SpecificationEvaluator no longer accepts bool cacheEnabled parameter. The caching is applied by default wherever necessary.
  • The EntityType, PropertyType, and PreviousPropertyType are removed from IncludeExpressionInfo.
  • The Update and Delete repository methods return Task<int> (the affected rows).

v8.0

22 Nov 16:52
de3c012
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v7.0...v8.0

v7.0

26 May 16:33
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v6.1.0...v7.0

v6.1.0

24 Jun 20:41
6a3dfd5
Compare
Choose a tag to compare

Added AddRangeAsync. #239
Added dictionary as arbitrary state for specifications. #248
Added support for updating specifications. #251
Updated base specifications as non-abstract classes. #252
Update the infrastructure for single result specifications. #272
Added UpdateRangeAsync. #272
Add WithSpecification overload for specifications with Select. #273

v6.0.1

19 Jan 20:39
Compare
Choose a tag to compare

Updated XML docs filename

v6.0.0

18 Jan 21:57
Compare
Choose a tag to compare

Release 6.0.0

See README.md
Breaking changes
Improve in-memory evaluation performance. #182. Breaking Changes: The specification state for Where, Order, and Search expressions is stored in separate types.
Remove Paginate builder action. Breaking Change (It was marked as obsolete since version 4). Issue #189

  Other updates
  Add support for AnyAsync in the base repository. #180
  Add SQL Like implementation for the in-memory evaluator. #150
  Add support for IgnoreQueryFilters. #159
  Return Task&lt;int&gt; from SaveChangesAsync. #174
  Add support for condition in the specification builder methods. #143
  Improve Include evaluation performance by implementing caching (opt-in feature). Issue #187
  Implement infrastructure for specification validators. Issue #111
  Adding XML Comments #224

What's Changed

New Contributors

Full Changelog: v5.2.0...v6.0.0

1.2.0

17 Jul 14:37
6d3ccfd
Compare
Choose a tag to compare

Added SpecificationEvaluator and some unit tests to verify behavior.