FlexQuery.NET.AspNetCore
4.0.0-beta1.0
See the version list below for details.
dotnet add package FlexQuery.NET.AspNetCore --version 4.0.0-beta1.0
NuGet\Install-Package FlexQuery.NET.AspNetCore -Version 4.0.0-beta1.0
<PackageReference Include="FlexQuery.NET.AspNetCore" Version="4.0.0-beta1.0" />
<PackageVersion Include="FlexQuery.NET.AspNetCore" Version="4.0.0-beta1.0" />
<PackageReference Include="FlexQuery.NET.AspNetCore" />
paket add FlexQuery.NET.AspNetCore --version 4.0.0-beta1.0
#r "nuget: FlexQuery.NET.AspNetCore, 4.0.0-beta1.0"
#:package FlexQuery.NET.AspNetCore@4.0.0-beta1.0
#addin nuget:?package=FlexQuery.NET.AspNetCore&version=4.0.0-beta1.0&prerelease
#tool nuget:?package=FlexQuery.NET.AspNetCore&version=4.0.0-beta1.0&prerelease
FlexQuery.NET.AspNetCore
ASP.NET Core integration with declarative field-access security.
When to Use This Package
Install this package when you want to use [FieldAccess] attributes on your API controllers to declare per-endpoint security rules, or when you need automatic model binding for FlexQueryParameters.
Installation
dotnet add package FlexQuery.NET.AspNetCore
Registration
builder.Services.AddFlexQuery();
builder.Services.AddFlexQuerySecurity();
// Or combine with MVC:
builder.Services.AddControllers()
.AddFlexQuerySecurity();
Quick Start
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpGet]
[FieldAccess(AllowedFields = new[] { "Id", "Name", "Email", "Status" },
MaxFieldDepth = 2)]
public async Task<IActionResult> GetUsers([FromQuery] FlexQueryParameters parameters)
{
// FieldAccess settings are automatically resolved from HttpContext.
var result = await _context.Users.FlexQueryAsync(parameters, HttpContext);
return Ok(result);
}
}
Features
[FieldAccess]Attribute — Declare Allowed, Blocked, Filterable, Sortable, Selectable, Groupable, Aggregatable fields per-endpointFieldAccessFilter— Action filter that applies attribute settings toQueryExecutionOptions- **
Automatic Security Resolution** — Extension method acceptingHttpContext` for automatic options resolution - Swagger Integration — Works with Swagger/Swashbuckle for API documentation
Related Packages
- FlexQuery.NET — Core query engine
- FlexQuery.NET.EntityFrameworkCore — EF Core execution
- FlexQuery.NET.Dapper — Dapper execution
Documentation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FlexQuery.NET (>= 4.0.0-beta1.0)
-
net6.0
- FlexQuery.NET (>= 4.0.0-beta1.0)
-
net8.0
- FlexQuery.NET (>= 4.0.0-beta1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.0 | 175 | 9/23/2026 |
| 4.0.0-rc.3 | 54 | 9/22/2026 |
| 4.0.0-rc.2 | 66 | 9/17/2026 |
| 4.0.0-rc.1 | 67 | 9/10/2026 |
| 4.0.0-preview.3 | 67 | 7/18/2026 |
| 4.0.0-preview.2 | 67 | 7/14/2026 |
| 4.0.0-preview.1 | 70 | 7/12/2026 |
| 4.0.0-beta1.0 | 75 | 9/8/2026 |
| 3.1.1 | 1,154 | 7/4/2026 |
| 3.1.0 | 130 | 6/26/2026 |
| 3.0.6 | 122 | 6/24/2026 |
| 3.0.5 | 124 | 6/24/2026 |
| 3.0.4 | 121 | 6/23/2026 |
| 3.0.3 | 124 | 6/23/2026 |
| 3.0.2 | 125 | 6/22/2026 |
| 3.0.1 | 128 | 6/22/2026 |
| 2.5.0 | 121 | 5/13/2026 |
| 2.4.0 | 121 | 5/10/2026 |
| 2.3.1 | 123 | 5/8/2026 |
- feat(dapper): emit copy-paste-ready DECLARE scripts in SQL execution logs
- refactor(diagnostics): move SqlFormatter to the shared FlexQuery.NET.SqlFormatting namespace
- fix(dapper): rewrite expand-block filter/sort fields through nested TypeMaps
- feat(dapper): log final SQL and parameters before every Dapper command
- test: cover Dapper include boundary and ForMember nested select projection
- test: add ExpectedDeliveryDate and Address navigation to shared fixtures
- feat(dapper): rewrite nested select children through TypeMaps and merge include hydration
- test(integration): cover parent-preserving collection include semantics
- test(integration): cover DTO include graph boundary semantics
- feat(mapping): materialize only the requested navigation graph in typed DTO queries
- feat(core): add DynamicGroupedResult model for grouped query execution
- test: cover serialization, validation, DI, parser, and builder updates
- test(dapper): cover Dapper DTO queries and HTTP integration surfaces
- test(integration): cover typed DTO, deep expansion, and navigation governance end to end
- test(mapping): cover AutoMapper-style mapping across EF Core and Dapper
- test: extend shared fixtures and models for typed DTO test coverage
- feat(samples): demo typed DTO queries in the sample WebApi
- feat(parsers): support 'as' select aliases and space-form sort directions
- feat(core): enforce public surface across sort, projection, keyset, and group builders
- feat(validation): enforce DTO public surface and expand-path governance
- feat(dapper): add typed DTO FlexQueryAsync overloads with surface-aware SQL generation
- feat(efcore): add typed DTO FlexQueryAsync overloads with grouped-query executor
- feat(serialization): shape QueryResult output to the selected DTO surface
- feat(core): add DTO projection builder and result-shape models for typed queries
- feat(mapping): add AutoMapper-style global mapping registry with TypeMap builder
- feat(core): add QuerySurface abstraction and unify field resolution through FieldResolver
- feat: remove CaseInsensitive option and all case-normalization wrappers
- feat(dapper): optimize Include materialization with direct projection path
- feat(dapper): strongly-type projected entities via DynamicTypeBuilder and resolve mapped property names in SQL output
- feat(dapper): apply JSON naming transformer to projected property names
- feat(validation): add rule requiring Include/Expand for navigation projections
- test: cover expand sort/take, paging defaults, cache keys, and projections
- test: cover split-query hydration, simple include streaming, and SQL builders
- feat(efcore): support sort/take in filtered include selectors
- feat(core): extend projection tree and metadata with Sort/Take
- feat(core): add Sort/Take to SelectionNode and propagate to cache keys
- feat(dapper): support expand sort/take in FlexQuery Dapper parameter parsing
- feat(dapper): implement split-query include hydration and simple include streaming
- test(expand): add integration and validation tests for expand/include pipeline
- fix(validation): reject expand when include list is empty or missing
- fix(efcore): merge expand configuration into include tree
- fix(dapper): exclude include-only joins from totalCount query
- test: update tests for renamed APIs and add principal key resolution tests
- fix: resolve principal key from entity mapping instead of hard-coded Id
- refactor: clean up FlexQuery.Dapper mapping API surface
- fix(expand): validate all expand nodes and handle empty includes
- fix(expand): enforce strict syntax in FQL expand parser
- fix(expand): normalize DSL expand parser to flat Path lists
- test(expand): add comprehensive test coverage for expand feature
- feat(expand): extend IncludeAccessValidationRule for expand paths
- feat(expand): add expand validation rules
- feat(expand): add DSL expand parser with nested block support
- feat(expand): add FQL expand parser with semicolon-separated options
- feat(expand): add ExpandAst model, normalizer, and core integration
- test(governance): switch GovernanceReviewChangesTests to shared models and add nested wildcard locking tests
- feat(aspnetcore): expose AllowedIncludes on FieldAccessAttribute and wire it in FieldAccessFilter
- feat(validation): enforce aggregate-select-without-groupby rule
- test(integration): update grouped query tests for strict sort validation
- test(validation): add unit tests for new GROUP BY validation rules
- refactor(validation): enforce grouped sort validation via ValidateOrThrow
- feat(validation): add GROUP BY projection, sort, and HAVING validation rules
- refactor(validation): improve governance configuration validation error messages
- fix(parsers): improve error position reporting for HAVING and FQL safety validator
- fix(parsers): report position of '*' token in HAVING aggregate field error
- feat(dsl): improve error message for reserved keywords used as unquoted values
- test(parsers): update exception message assertions for new standardized format
- feat(dsl): migrate DSL parsers to structured exception positions
- feat(fql): migrate FQL parsers to structured exception positions
- feat(parsers): add structured Position/Expected/Found to internal parser exceptions
- refactor(validation): improve validation error formatting and HAVING aggregate messaging
- feat(config): support per-request QuerySyntax and DisablePaging overrides
- feat(dsl): support AND/OR logical keywords in filter expressions
- fix(parser): correct OR logical operator in FqlHavingAstParser
- Merge branch 'main' of https://github.com/peterjohncasasola/FlexQuery.NET
- merge feature branch having-nested-condition to main branch (#12)
- Merge branch 'main' into feature/having-nested-condition
- docs(tests): clarify AllowedIncludes as validation-only and add regression tests
- fix(projection): preserve nested select aliases and allow mixed flat/nested syntax