All notable changes to LightQuery are documented here.
- The Angular client was updated to Angular v18
- The Angular client now has a
removeQueryParameter
method
- Added a dedicated target for .NET 8
- Added tests for .NET 8
forceRefresh
on the Angular client no longer causes a request if no base url for the service is configured- Dropped tests and dedicated targets for .NET Framework 4.6.1, .NET Core 3.1 and .NET 5.0
- Added a dedicated target for .NET 7
- Added tests for .NET 7
- The
PaginationBaseService
in the Angular library now destroys it's subscription internally in thengOnDestroy
lifecycle hook
- Added an optional parameter to the LightQuery client for Angular to supply custom query parameters when calling
getAll()
- Added a dedicated target for .NET 6 for the Entity Framework Core projects
- Added tests for .NET 6
- Dropped tests for
netcoreapp2.1
- The Angular client was updated to Angular v14
- The Angular client was updated to Angular v12
- Added a compilation target for
net5.0
and added tests fornet5.0
- Dropped support for
netcoreapp3.0
and changed target tonetcoreapp3.1
- Added a new property
wrapNestedSortInNullChecks
to the ASP.NET Core controller attributes. This defaults tofalse
for regular[LightQuery]
and totrue
for[AsyncLightQuery]
. It controls whether nested sorting / relational sorting will introduce null checks, e.g. sorting byx.SubProperty.SubId
is either translated as.Where(x => x.SubProperty != null).OrderBy(x => x.SubProperty.SubId)
or directly as.OrderBy(x => x.SubProperty.SubId)
- Added a
debounceTime(0)
pipe to the AngularPaginationBaseService<T>
, to ensure that changing multiple options of the service in code doesn't result in sending a separate request (which is then cancelled) for every change
- Drop tests for
netcoreapp2.0
andnetcoreapp3.0
and add tests fornetcoreapp3.1
- The Angular library was updated to v10
- Addition of the LightQuery.Swashbuckle (thanks to GitHub user @berkayakcay) and LightQuery.NSwag packages to support Swagger & OpenAPI generation
- The Angular library was updated to be compatible with Angular v9.1
- Add a
thenSort
parameter to specify a second sort option. This translates to something likequeryable.OrderBy(sort).ThenBy(thenSort)
- Fix C# client not cancelling previous requests when query parameters in the
PaginationBaseService
were changed. If a new request is started due to parameter changes while another request is still en-route, the previous request is discarded and no event is emitted for when the previous request completes - The C# client has now an additional constructor overload for the
PaginationBaseService
to be able to pass aCancellationToken
- Fix possible
NullReferenceException
in case of relational sorting where an invalid property name is passed via the query. Thanks to GitHub user @smitpatel for discovering it!
- Fixed a bug that caused Entity Framework Core to throw an
InvalidOperationException
when sorting was applied to projections to a class that inherited from the base query type. The error was an incorrectly used reflection invocation to determine the type the query applies to
- Add support for ASP.NET Core 3.0
- The .NET
PaginationBaseService
no longer makes requests when the url is null
- Fix issue where
BadRequest
results inAsyncLightQuery
decorated controllers withforcePagination:true
were returning an emptyOkResult
with status code200
instead of the original404 - Bad Request
- The generated assemblies now have a strong name. This is a breaking change of the binary API and will require recompilation on all systems that consume this package. The strong name of the generated assembly allows compatibility with other, signed tools. Please note that this does not increase security or provide tamper-proof binaries, as the key is available in the source code per Microsoft guidelines
- Bugfix: Empty results now report the
page
as1
instead of0
. Thanks to GitHub user @erdembas for the pull request!
- When a
page
is requested that is higher than the last available one, the last available one will be returned instead. Thanks to GitHub user @erdembas for the pull request!
- It's now possible to do relational sorting, meaning that nested properties can be used for sorting. For example, it is now possible to sort by
user.bankAccount.balance
. Thanks to GitHub user @erdembas for the pull request!
- The
defaultSort
parameter was introduced for the server side controller attributes. Thanks to GitHub user @erdembas for the pull request!
- Raise minimum supported .NET Standard version to
netstandard2.0
- Bump version to align .NET and npm package versions
- Publish ng-lightquery npm package for angular and include PaginationBaseService in the client libraries
- Update version to align with new releases of LightQuery.EntityFrameworkCore and LightQuery.Client. Added support for EntityFrameworkCore async materialization of queries and a client side package for easier consuming of APIs
- Forced pagination was not applied when no query string at all was present in the Http request
- Initial release