- Updated Nuget packages to latest versions.
- A host of minor fixes and improvements following a code review.
- PagedQueryResult is now a
record class. ExecutePagedQueryAsyncnow has a retry guard to prevent an infinite loop in rare circumstances.- Replaced
DbContextOptionsBuilderextension methodGetDatabaseTypewith version that takes aDbContextOptionsparameter as this can be used in more places (useoptionsBuilder.Options.GetDatabaseType()as a replacement).
- Updated Nuget packages to latest versions (Did not update default documentation package as new version gave error when compiling source).
- Upgraded Nuget packages to latest versions (.Net 10, Test, EF Core etc.).
- Updated copyright date to 2026.
- Upgraded Nuget packages to release versions (.Net 10, Test, EF Core etc.).
- Added a new test to
CreateGuidTestswhich 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
ExecuteUpsertGetCountandExecuteUpsertGetRowsmethods. These work like the existingExecuteUpdateGetCountandExecuteUpdateGetRowsmethods but will insert a new record if no matching record is found.
- Replaced FromSqlRaw with SqlQueryRaw (undoing change introduced in 6.0.0,4) as FromSqlRaw could not support shared entities without extra logic.
- 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.
- Experimental pre-release version. Tidied up code in ExecuteUpdate so methods use
FromSqlRaw.
- Release abandoned.
- 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.
- Fixed issue with method
CustomQueryGeneratorExtensions.GetEntityTypewhere it was not finding the entity type if the entity was a shared type.
- 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/RETURNINGclauses. - Breaking Change Merged and rewrote the code of the
ExecuteUpdateGetRowsandExecuteDeleteRowsmethods. These now use the Custom SQL Generators. - Added a new
ExecuteInsertGetRowmethod (as part of theExecuteUpdateGetRowswork) that inserts a record and returns it. - Added
TableHintextensions 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> ExecutePagedQueryAsyncand renamedPageResultEntitytoPagedQueryResult. - Breaking Change Removed
Task<DataTable> ExecuteQueryAsync. - Refactored and simplifed the code used in the
MatchandFreeTextSearchmethods. - Breaking Change For consistency, renamed
UseFreeTextExtensionstoUseFreeTextSearchExtensions. - Renamed the
<TEntity>generic parameter to<TSource>for consistency with EF Core. - Renamed the
IQueryable<TEntity> queryparameter in extension methods tosourcefor consistency with EF Core. - Refactored
UniqueConstraintcode 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.
- Added
ExecuteDeleteGetRowsandExecuteDeleteGetCountThese work like theirExecuteUpdatecounterparts but delete records instead of updating them. - Added missing
cancellationTokenparameter toGetUniqueConstraintDetailsAsync. - Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.
- Fixed various style checker errors in tests.
- Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.
- Upgraded solution to use new XML based .slnx format.
- 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. ExecuteUpdateGetRowsnow alters how it obtains its output depending on the value in theUseSqlReturningClause/UseSqlOutputClausemodel builder options.- Re-instated the
GetDbContextextensions as the IQueryable variant is needed byExecuteUpdateGetRows. - 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
MatchandFreeTextSearchDbFunction extensions to allow for free text searching in LINQ queries.
- Upgraded SonarAnalyzer, EF Core and MSTest Nuget packages.
- 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.
- Fixed issue where
ExecuteUpdateGetRowswas not finding any rows to update due to an issue with parameter types when run against SQLite.
- 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 withparams IEnumerable<object>. Removed the existing query methods that tookIQueryable<object>as the parameters collection as they are now redundant. - Added new
ExecuteInsertmethods that take a generic parameter and return a key of this type (Kept the existing methods that return alongfor convienience). - Breaking Change Renamed
ExecuteUpdatetoExecuteUpdateGetCountand added newExecuteUpdateGetRowsmethods which return the rows updated instead of a count. - Switched from using a .ruleset file for source analysis to .editorconfig.
- Added new
ExecuteQuerymethods that take a generic entity parameter and return a list of the entities. - Added new
ExecutePagedQuerymethods 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
GetUniqueConstraintDetailsandGetUniqueConstraintDetailsAsyncto take the database facade as their first parameter. - Refactored tests to make the results easier to read.
- Fixed issue with GetContext() where it only worked for
DbSet<>objects and notIQueryable<>. - Upgraded SonarAnalyzer.
- Upgraded solution to .Net 9, Entity Framework Core to 9 and MSTest Nuget packages.
- 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.
- 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.
- Added new methods to the Execute SQL Extensions that take an
IEnumerable<object>as a parameter instead ofparams 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.
- Upgraded Entity Framework Core to version 7.0.4, SonarAnalyzer and MSTest Nuget packages.
- Remove unnecessary generic constraint from GetContext.
- 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.
- Standardised and removed superfluous message from UniqueConstraintException.
- Added missing cancellationToken parameter to ExecuteUpdateAsync.
- Upgraded solution to .Net 7, Entity Framework Core to 7.0.0.
- Upgraded SonarAnalyzer.
- Added ExecuteUpdate extensions.
- Standardised exception message in UniqueConstraintException.
- Corrected namespace issue that broke existing clients.
- Upgraded Entity Framework Core to version 6.0.10.
- Added interceptor and extensions to capture and process unique constraint exceptions.
- Upgraded Entity Framework Core to version 6.0.9, SonarAnalyzer and MSTest Nuget packages.
- 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.
- Upgraded Entity Framework Core to version 6.0.5, SonarAnalyzer and MSTest Nuget packages.
- Changed namespaces to be file scoped.
- Upgraded SonarAnalyzer and MSTest Nuget packages.
- Minor code change in QueryExtensions LimitQuery to remove duplicated code.
- 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.
- Upgraded Entity Framework Core to version 6.0.3 and SonarAnalyzer Nuget packages.
- Upgraded SonarAnalyzer.CSharp package and tidied up properties in project files.
- Corrected typo in package company name.
- 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
Added GetDatabaseType extension method for MigrationBuilder objects.
- Minor code refactoring.
- Upgraded project so it builds a Nuget package.
- Added support for SQL Server.
- Upgraded Entity Framework Core to version 6.0.1
- Upgraded solution to .Net 6, Entity Framework Core to 6.0.0 and Nuget packages used by the tests to the latest versions
- Upgraded Entity Framework Core to version 5.0.11 and Nuget packages used by the tests to the latest versions
- Upgraded Entity Framework Core to version 5.0.9 and Nuget packages used by the tests to the latest versions
- Upgraded Entity Framework Core to version 5.0.8 and Nuget packages used by the tests to the latest versions
- Upgraded Entity Framework Core to version 5.0.7 and Nuget packages used by the tests to the latest versions
- Upgraded Entity Framework Core to version 5.0.6
- Upgraded Nuget packages.
- Initial release.