Skip to content

Latest commit

 

History

History
304 lines (193 loc) · 14.8 KB

File metadata and controls

304 lines (193 loc) · 14.8 KB

Version 6.0.0.11 - 27th March 2026

  • Updated Nuget packages to latest versions.
  • A host of minor fixes and improvements following a code review.
  • PagedQueryResult is now a record class.
  • ExecutePagedQueryAsync now has a retry guard to prevent an infinite loop in rare circumstances.
  • Replaced DbContextOptionsBuilder extension method GetDatabaseType with version that takes a DbContextOptions parameter as this can be used in more places (use optionsBuilder.Options.GetDatabaseType() as a replacement).

Version 6.0.0.10 - 03rd March 2026

  • Updated Nuget packages to latest versions (Did not update default documentation package as new version gave error when compiling source).

Version 6.0.0.9 - 16th February 2026

  • Upgraded Nuget packages to latest versions (.Net 10, Test, EF Core etc.).
  • Updated copyright date to 2026.

Version 6.0.0.8 - 05th December 2025

  • Upgraded Nuget packages to release versions (.Net 10, Test, EF Core etc.).

Version 6.0.0.7 - 09th November 2025

  • Added a new test to CreateGuidTests which uses multiple threads to generate a large number of entries with a GUID key. It then reads them back to check they are in sequential order.
  • Added new ExecuteUpsertGetCount and ExecuteUpsertGetRows methods. These work like the existing ExecuteUpdateGetCount and ExecuteUpdateGetRows methods but will insert a new record if no matching record is found.

Version 6.0.0.6 - 30th October 2025

  • Replaced FromSqlRaw with SqlQueryRaw (undoing change introduced in 6.0.0,4) as FromSqlRaw could not support shared entities without extra logic.

Version 6.0.0.5 - 29th October 2025

  • Added new utility extension method CreateGuid. SQL Server can store GUIDs but because of how they are handled Version 7 GUIDs are not sorted in the correct order (V7 GUIDs contain a timestamp). This method uses a third party library (UUIDNext) to create GUIDS that are compatible with the supported database types.
  • Removed unused constants.
  • Merged changes from 6.0.0.2 and 6.0.0.4 into master.

Version 6.0.0.4 - 29th October 2025

  • Experimental pre-release version. Tidied up code in ExecuteUpdate so methods use FromSqlRaw.

Version 6.0.0.3 - 29th October 2025

  • Release abandoned.

Version 6.0.0.2 - 05th October 2025

  • Experimental pre-release version. Changed the code to use AsyncLocal fields to pass information to the Custom Query Generators and Interceptors instead of using Tags (This is because I found an issue with EF Core 10 where Tags were being lost in certain conditions).
  • Added new ExecuteInsert method that will insert a record with no caching of the values locally.

Version 6.0.0.1 - 02nd October 2025

  • Fixed issue with method CustomQueryGeneratorExtensions.GetEntityType where it was not finding the entity type if the entity was a shared type.

Version 6.0.0.0 - 01st October 2025

  • Breaking Change Upgraded solution to .Net 10, Entity Framework Core to 10 and MSTest Nuget packages.
  • Breaking Change Carried on work refactoring code so it is grouped into namespaces based on functionality. Single utility methods are now in the Utilities/UtilityExtensions class.
  • Added custom SQL generators. These allow for customisation of the SQL being generated such as adding table hints and OUTPUT/RETURNING clauses.
  • Breaking Change Merged and rewrote the code of the ExecuteUpdateGetRows and ExecuteDeleteRows methods. These now use the Custom SQL Generators.
  • Added a new ExecuteInsertGetRow method (as part of the ExecuteUpdateGetRows work) that inserts a record and returns it.
  • Added TableHint extensions which provide support for adding SQL Server table hints to LINQ queries.
  • Breaking Change Where a generic Type is being returned from a method, corrected the null handling so nullable and non-nullable types can be used.
  • Breaking Change Removed Task<long> ExecuteInsertAsync.
  • Breaking Change Removed Task<PageResultTable> ExecutePagedQueryAsync and renamed PageResultEntity to PagedQueryResult.
  • Breaking Change Removed Task<DataTable> ExecuteQueryAsync.
  • Refactored and simplifed the code used in the Match and FreeTextSearch methods.
  • Breaking Change For consistency, renamed UseFreeTextExtensions to UseFreeTextSearchExtensions.
  • Renamed the <TEntity> generic parameter to <TSource> for consistency with EF Core.
  • Renamed the IQueryable<TEntity> query parameter in extension methods to source for consistency with EF Core.
  • Refactored UniqueConstraint code to use an interface for exception processors rather than having a base class.
  • Added new code to tests and refactored existing code to simplify it by removing the use of the [DynamicData] attribute.
  • Added new Wiki API documentation generated from code comments.

Version 5.0.1.0 - 13th August 2025

  • Added ExecuteDeleteGetRows and ExecuteDeleteGetCount These work like their ExecuteUpdate counterparts but delete records instead of updating them.
  • Added missing cancellationToken parameter to GetUniqueConstraintDetailsAsync.
  • Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.
  • Fixed various style checker errors in tests.

Version 5.0.0.2 - 11th June 2025

  • Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.

Version 5.0.0.1 - 18th May 2025

  • Upgraded solution to use new XML based .slnx format.

Version 5.0.0.0 - 16th May 2025

  • Breaking Change Refactored code so it is grouped into namespaces based on functionality.
  • Breaking Change Removed Synchronous methods where an asynchronous alternative exists.
  • Breaking Change The project now needs the full version of EF core.
  • Breaking Change Removed string GetDatabaseType(string providerName) as this is no longer needed, use one of the other overloads.
  • ExecuteUpdateGetRows now alters how it obtains its output depending on the value in the UseSqlReturningClause / UseSqlOutputClause model builder options.
  • Re-instated the GetDbContext extensions as the IQueryable variant is needed by ExecuteUpdateGetRows.
  • When testing with SQLite changed the tests to use a physical rather than an in memory database.
  • Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.
  • Refactored update setters and get DbContext to make Reflection code more efficient.
  • Added new Match and FreeTextSearch DbFunction extensions to allow for free text searching in LINQ queries.

Version 4.0.1.1 - 03rd March 2025

  • Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.

Version 4.0.1.0 - 10 February 2025

  • Added new Case Insensitivity Extensions which provide an upgrade to SQLite's NoCase collation and methods to set a case insensitive default collation sequence.
  • Updated the MSTest Nuget package.
  • More Test refactoring and tidying.

Version 4.0.0.1 - 04 February 2025

  • Fixed issue where ExecuteUpdateGetRows was not finding any rows to update due to an issue with parameter types when run against SQLite.

Version 4.0.0.0 - 31st January 2025

  • Updated copyright date to 2025.
  • Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.
  • Breaking Change Moved extensions into Extension namespace and general code into Classes.
  • Breaking Change Renamed UniqueConstraintInterceptor to UniqueConstraintSaveChangesInterceptor.
  • Breaking Change Change the DatabaseType to a string rather than an enum (This makes it easier to pass values about with needing a dependency on EntityFrameworkCore.Extensions).
  • General source code tidying including standardising regions.
  • Replaced Lambda methods with block methods for consistency and ease of adding guard clauses later.
  • Breaking Change Replaced params object[] parameter in methods with params IEnumerable<object>. Removed the existing query methods that took IQueryable<object> as the parameters collection as they are now redundant.
  • Added new ExecuteInsert methods that take a generic parameter and return a key of this type (Kept the existing methods that return a long for convienience).
  • Breaking Change Renamed ExecuteUpdate to ExecuteUpdateGetCount and added new ExecuteUpdateGetRows methods which return the rows updated instead of a count.
  • Switched from using a .ruleset file for source analysis to .editorconfig.
  • Added new ExecuteQuery methods that take a generic entity parameter and return a list of the entities.
  • Added new ExecutePagedQuery methods that take a generic entity parameter and return a list of the entities in the QueryPage (now PageResultxxxx) object.
  • Made generic parameter names in source code consistent:
    <T> = General type.
    <TEntity> = Entity type.
    <TProperty> = Property type (used in execute update code only).
  • Added guard clauses to public methods.
  • Breaking Change Removed TableExists methods as these did not support schemas and can be easily replicated in standard EF Core.
  • Enabled nullable reference types in both projects and corrected any issues associated with this.
  • Breaking Change Removed DbContext GetContext<TEntity>(this IQueryable<TEntity> query) as it required a reflection hack which made it unsupportable between EF versions.
  • Breaking Change Altered GetUniqueConstraintDetails and GetUniqueConstraintDetailsAsync to take the database facade as their first parameter.
  • Refactored tests to make the results easier to read.

Version 3.0.2.1 - 08th January 2025

  • Fixed issue with GetContext() where it only worked for DbSet<> objects and not IQueryable<>.
  • Upgraded SonarAnalyzer.

Version 3.0.2.0 - 13th November 2024

  • Upgraded solution to .Net 9, Entity Framework Core to 9 and MSTest Nuget packages.

Version 3.0.1.0 - 05th October 2024

  • Upgraded solution to .Net 8, Entity Framework Core to 8.0.8, SonarAnalyzer, StyleCop and MSTest Nuget packages.
  • Fixed style checker errors.
  • Split test methods into sync and async tests rather than using one method.
  • Made test names more logical.

Version 3.0.0.0 - 4th June 2023

  • Removed Interpolated and Raw suffixes from query method names. For example ExecuteScalarRaw and ExecuteScalarInterpolated are both now known as ExecuteScalar and the compiler chooses the correct method to use based on the parameters (method overloading).
  • Upgraded SonarAnalyzer and MSTest Nuget packages.
  • Tidied up projects and style checker settings.

Version 2.0.1.0 - 27th April 2023

  • Added new methods to the Execute SQL Extensions that take an IEnumerable<object> as a parameter instead of params object[].
  • Added new tests for Execute SQL Extensions that take an IEnumerable<object>.
  • Refactored and tidied up existing test code to make it more consistent.
  • Upgraded Entity Framework Core to version 7.0.5 and SonarAnalyzer packages.

Version 2.0.0.4 - 18th March 2023

  • Upgraded Entity Framework Core to version 7.0.4, SonarAnalyzer and MSTest Nuget packages.

Version 2.0.0.4 - 17th January 2023

  • Remove unnecessary generic constraint from GetContext.

Version 2.0.0.3 - 16th January 2023

  • Upgraded Entity Framework Core to version 7.0.2, SonarAnalyzer and MSTest Nuget packages.
  • Added new GetContext extension to get the DbContext from an IQueryable object.

Version 2.0.0.2 - 20th November 2022

  • Standardised and removed superfluous message from UniqueConstraintException.

Version 2.0.0.1 - 12th November 2022

  • Added missing cancellationToken parameter to ExecuteUpdateAsync.

Version 2.0.0.0 - 11th November 2022

  • Upgraded solution to .Net 7, Entity Framework Core to 7.0.0.
  • Upgraded SonarAnalyzer.
  • Added ExecuteUpdate extensions.

Version 1.0.4.2 - 17th October 2022

  • Standardised exception message in UniqueConstraintException.

Version 1.0.4.1 - 17th October 2022

  • Corrected namespace issue that broke existing clients.

Version 1.0.4.0 - 17th October 2022

  • Upgraded Entity Framework Core to version 6.0.10.
  • Added interceptor and extensions to capture and process unique constraint exceptions.

Version 1.0.3.1 - 19th September 2022

  • Upgraded Entity Framework Core to version 6.0.9, SonarAnalyzer and MSTest Nuget packages.

Version 1.0.3.0 - 29th May 2022

  • Added extension methods to check the existance of a specified database or table.
  • Refactored the private query methods held in QueryExtensions into a new class called QueryMethods and made them internal so they can be called from other extension classes in the project.

Version 1.0.2.6 - 24th May 2022

  • Upgraded Entity Framework Core to version 6.0.5, SonarAnalyzer and MSTest Nuget packages.
  • Changed namespaces to be file scoped.

Version 1.0.2.5 - 7th May 2022

  • Upgraded SonarAnalyzer and MSTest Nuget packages.
  • Minor code change in QueryExtensions LimitQuery to remove duplicated code.

Version 1.0.2.4 - 21st April 2022

  • Upgraded Entity Framework Core to version 6.0.4, SonarAnalyzer and MSTest Nuget packages.
  • Changed project from using to using for compatibility with new internal packaging script.

Version 1.0.2.3 - 15th March 2022

  • Upgraded Entity Framework Core to version 6.0.3 and SonarAnalyzer Nuget packages.

Version 1.0.2.2 - 1st March 2022

  • Upgraded SonarAnalyzer.CSharp package and tidied up properties in project files.

Version 1.0.2.1 - 13th February 2022

  • Corrected typo in package company name.

Version 1.0.2.0 - 12th February 2022

  • Upgraded Entity Framework Core to version 6.0.2 and Nuget packages used by the tests to the latest versions
  • Added Style Checkers and rules
  • Turned on Treat Warnings as Errors
  • Fixed any errors raised by the Style Checkers

Version 1.0.1.3 - 27th January 2022

Added GetDatabaseType extension method for MigrationBuilder objects.

Version 1.0.1.2 - 16th January 2022

  • Minor code refactoring.

Version 1.0.1.1 - 15th January 2022

  • Upgraded project so it builds a Nuget package.

Version 1.0.1.0 - 1st January 2022

  • Added support for SQL Server.

Version 1.0.0.8 - 19th December 2021

  • Upgraded Entity Framework Core to version 6.0.1

Version 1.0.0.7 - 28th November 2021

  • Upgraded solution to .Net 6, Entity Framework Core to 6.0.0 and Nuget packages used by the tests to the latest versions

Version 1.0.0.6 - 12th October 2021

  • Upgraded Entity Framework Core to version 5.0.11 and Nuget packages used by the tests to the latest versions

Version 1.0.0.5 - 30th August 2021

  • Upgraded Entity Framework Core to version 5.0.9 and Nuget packages used by the tests to the latest versions

Version 1.0.0.4 - 25th July 2021

  • Upgraded Entity Framework Core to version 5.0.8 and Nuget packages used by the tests to the latest versions

Version 1.0.0.3 - 15th June 2021

  • Upgraded Entity Framework Core to version 5.0.7 and Nuget packages used by the tests to the latest versions

Version 1.0.0.2 - 12th May 2021

  • Upgraded Entity Framework Core to version 5.0.6

Version 1.0.0.1 - 22nd April 2021

  • Upgraded Nuget packages.

Version 1.0.0.0 - 05th April 2021

  • Initial release.