Releases: ardalis/Specification
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
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 returnEnumerable.Empty<T>
if empty. - The default value for
Take
andSkip
properties no longer isnull
. They're updated to a non-nullableint
type with a default value of-1
. - The specification constructors no longer accept
IInMemorySpecificationEvaluator
andISpecificationValidator
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>
andISpecificationBuilder<T, TResult>
builders. - The
OrderedSpecificationBuilder
andCacheSpecificationBuilder
are removed. - The in-memory
SearchEvaluator
is renamed toSearchMemoryEvaluator
. - The
IncludeEvaluator.Default
andIncludeEvaluator.Cached
singleton instances are removed. Instead, use theIncludeEvaluator.Instance
. - The
SpecificationEvaluator
no longer acceptsbool cacheEnabled
parameter. The caching is applied by default wherever necessary. - The
EntityType
,PropertyType
, andPreviousPropertyType
are removed fromIncludeExpressionInfo
. - The
Update
andDelete
repository methods returnTask<int>
(the affected rows).
v8.0
What's Changed
- Add AsTracking feature. by @fiseni in #338
- Update LangVersion. Consolidate styling and conventions. by @fiseni in #345
- Add sample applications. by @fiseni in #347
- Add net6.0 TFM for EntityFramework6 package. by @fiseni in #348
- Create new CI and Release workflows. by @fiseni in #350
- Add scripts for test and coverage reports. by @fiseni in #351
- Dummy PR to test the triggers. by @fiseni in #352
- Update the action status badge in Readme. by @fiseni in #353
- Add more samples. by @fiseni in #354
- Add script for SQL Local DB setup. by @fiseni in #357
- Refactor and improve integration test fixtures. by @fiseni in #360
- Talpers/delete range by spec by @thorstenalpers in #369
- Add messages to obsolete specs for clarity by @Rowe2ryWA in #373
- Update CONTRIBUTING.md by @sadukie in #374
- Publish version 8.0 by @fiseni in #355
New Contributors
- @thorstenalpers made their first contribution in #369
- @Rowe2ryWA made their first contribution in #373
- @sadukie made their first contribution in #374
Full Changelog: v7.0...v8.0
v7.0
What's Changed
- Patch 2 by @davidhenley in #283
- Fix
Just the Docs
link in docs home page by @snowfrogdev in #293 - Update url path by @ta1H3n in #303
- Implement SelectMany support by @amdavie in #320
- Add two methods for consuming repositories in scenarios where repositories could be longer lived (e.g. Blazor component Injections) by @jasonsummers in #289
- Added support for AsAsyncEnumerable by @nkz-soft in #316
- Lamadelrae/doc faq ef versions by @lamadelrae in #324
- Updated projects, drop support for old TFMs. by @fiseni in #326
- Update the search feature to generate parameterized query. by @fiseni in #327
- Add support for extending default evaluator list by @fiseni in #328
- Ardalis/cleanup by @ardalis in #332
New Contributors
- @snowfrogdev made their first contribution in #293
- @ta1H3n made their first contribution in #303
- @amdavie made their first contribution in #320
- @jasonsummers made their first contribution in #289
- @nkz-soft made their first contribution in #316
- @lamadelrae made their first contribution in #324
Full Changelog: v6.1.0...v7.0
v6.1.0
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
v6.0.0
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<int> 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
- update build workflows by @halilkocaoz in #151
- Add dependency injection for Repository to Getting Started guide by @davidhenley in #157
- Docs builder extensions #162 by @vittorelli in #163
- ICacheSpecificationBuilder by @vittorelli in #161
- Adding some xml comments by @mustafaelshobaky in #168
- Add SQL LIKE implementation for the in-memory evaluator. by @fiseni in #153
- Implemented AnyAsync method by @gabrielheming in #183
- Refactor specification expressions by @devbased in #185
- Implement Include/ThenInclude as adapter by @devbased in #188
- Restore ISingleResultSpecificationOfT by @vittorelli in #196
- Remove paginate by @MarkusGnigler in #195
- Update docs for use with DbContext and Repository Pattern by @KyleMcMaster in #204
- Return Task from SaveChangesAsync. by @fiseni in #190
- Implement IgnoreQueryFilters feature. by @fiseni in #191
- Add support for condition in the specification builder methods. by @fiseni in #192
- Implement specification validators. by @fiseni in #193
- Update dependencies for all projects. by @fiseni in #210
- use DbSet Update method in repo Update method by @ardalis in #211
- Ardalis/doc ignorequeryfilters by @ardalis in #212
- Update specification with in memory collections documentation by @KyleMcMaster in #213
- Move the selector checks to the evaluators. by @fiseni in #214
- Docs: AsNoTracking by @ardalis in #216
- Update quick-start-guide.md by @KyleMcMaster in #218
- Update abstract repository documentation by @KyleMcMaster in #220
- Update abstract repository documentation by @KyleMcMaster in #221
- Update Evaluate documentation by @KyleMcMaster in #222
- Fix preprocessor directives in EF Core project to account for net6.0 by @fiseni in #219
- Fix nullability warnings. by @fiseni in #223
- Adding and Applying EditorConfig by @ardalis in #226
New Contributors
- @halilkocaoz made their first contribution in #151
- @davidhenley made their first contribution in #157
- @vittorelli made their first contribution in #163
- @gabrielheming made their first contribution in #183
- @devbased made their first contribution in #185
- @MarkusGnigler made their first contribution in #195
- @KyleMcMaster made their first contribution in #204
Full Changelog: v5.2.0...v6.0.0