Skip to content

Releases: ardalis/Specification

v9.3.1

24 Aug 14:14
4f2d97a

Choose a tag to compare

What's Changed

  • Fix allocations produced by unreachable fallback code by @fiseni in #529
  • Use NSubstitute for testing custom spec implementations. by @fiseni in #530

Full Changelog: v9.3.0...v9.3.1

v9.3.0

20 Aug 14:31
9653d36

Choose a tag to compare

What's Changed

  • Avoid List allocation for PostProcessingAction. by @fiseni in #501
  • Redefine WithProjectionOf as an extension to Specification instead of ISpecification by @fiseni in #517
  • Rename TagWithEvaluator to QueryTagEvaluator. by @fiseni in #512
  • OneOrMany implementation by @fiseni in #507
  • Refactor the state of where expressions as OneOrMany. by @fiseni in #508
  • Refactor the state of order expressions as OneOrMany. by @fiseni in #509
  • Refactor the state of include expressions as OneOrMany. by @fiseni in #510
  • Refactor the state of search expressions as OneOrMany. by @fiseni in #511
  • Consolidate OneOrMany implementation and its usage. by @fiseni in #513
  • Add a fallback to LINQ for search evaluators/validator in case of custom user specifications. by @fiseni in #514
  • Update dependencies. by @fiseni in #526
  • Use opencover format for coverage reports. by @fiseni in #503
  • Added Full Build workflow that publishes coverage reports. by @fiseni in #504
  • Add benchmarks project. by @fiseni in #505
  • Cleanup by @fiseni in #518
  • Add new test fixtures for EF6 provider. by @fiseni in #519
  • Add tests for EF6 evaluators. by @fiseni in #520

Full Changelog: v9.2.0...v9.3.0

v9.2.0

08 Jun 13:52
c302895

Choose a tag to compare

What's Changed

Full Changelog: v9.1.0...v9.2.0

v9.1.0

23 Apr 14:38
b129e30

Choose a tag to compare

What's Changed

  • Add WithProjectionOf feature. by @fiseni in #460
  • Fix type inference for ThenInclude with casting. by @fiseni in #466

Full Changelog: v9.0.1...v9.1.0

v9.0.1

14 Mar 21:11
062cc43

Choose a tag to compare

What's Changed

  • Re-add inheritance in the builders. by @fiseni in #457

Full Changelog: v9.0.0...v9.0.1

v9.0.0

12 Mar 13:10
885782d

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

Choose a tag to compare

What's Changed

New Contributors

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

v7.0

26 May 16:33

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

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

Choose a tag to compare

Updated XML docs filename