FlexQuery.NET.AspNetCore 4.0.0-preview.3

This is a prerelease version of FlexQuery.NET.AspNetCore.
dotnet add package FlexQuery.NET.AspNetCore --version 4.0.0-preview.3
                    
NuGet\Install-Package FlexQuery.NET.AspNetCore -Version 4.0.0-preview.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FlexQuery.NET.AspNetCore" Version="4.0.0-preview.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FlexQuery.NET.AspNetCore" Version="4.0.0-preview.3" />
                    
Directory.Packages.props
<PackageReference Include="FlexQuery.NET.AspNetCore" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FlexQuery.NET.AspNetCore --version 4.0.0-preview.3
                    
#r "nuget: FlexQuery.NET.AspNetCore, 4.0.0-preview.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FlexQuery.NET.AspNetCore@4.0.0-preview.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FlexQuery.NET.AspNetCore&version=4.0.0-preview.3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=FlexQuery.NET.AspNetCore&version=4.0.0-preview.3&prerelease
                    
Install as a Cake Tool

FlexQuery.NET.AspNetCore

NuGet Version

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-endpoint
  • FieldAccessFilter — Action filter that applies attribute settings to QueryExecutionOptions
  • **Automatic Security Resolution** — Extension method accepting HttpContext` for automatic options resolution
  • Swagger Integration — Works with Swagger/Swashbuckle for API documentation

Documentation

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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-preview.3 33 7/18/2026
4.0.0-preview.2 36 7/14/2026
4.0.0-preview.1 49 7/12/2026
3.1.1 99 7/4/2026
3.1.0 107 6/26/2026
3.0.6 102 6/24/2026
3.0.5 102 6/24/2026
3.0.4 101 6/23/2026
3.0.3 106 6/23/2026
3.0.2 110 6/22/2026
3.0.1 111 6/22/2026
2.5.0 111 5/13/2026
2.4.0 109 5/10/2026
2.3.1 112 5/8/2026
2.3.0 103 5/7/2026
2.2.0 122 5/6/2026
2.1.0 101 5/6/2026
2.0.1 96 5/6/2026
1.7.2 103 5/4/2026
Loading failed

- docs: update OpenAPI documentation registry and schema docs
- test: update tests for HAVING expression tree, parsers, validators, and SQL generation
- docs: update OpenAPI documentation, adapters, and sample diagnostics
- fix: update validation rules and request model for aggregate refactor
- refactor: update fluent builders and extensions for new Aggregate model
- feat: update HAVING expression builder and SQL generation for nested conditions
- refactor: replace AggregateModel with Aggregate and update aggregate parsers
- feat: add HAVING validation rules and update validator pipeline
- feat: add recursive-descent HAVING parsers for DSL and FQL with AND/OR/parentheses
- refactor: introduce HAVING expression tree models and AST nodes
- refactor(groupby): extract GroupByParser from FQL-specific parser
- test(parser-dsl): add identifier grammar tests for select and aggregate
- test(parser-fql): add identifier grammar tests for select and aggregate
- refactor(parser-dsl): enforce single identifier grammar in select and aggregate
- refactor(parser-fql): enforce single identifier grammar in select and aggregate
- refactor(parser): unify identifier grammar in ParserUtilities
- test: update SelectTests for SelectNode canonical AST
- refactor: minor cleanup in FqlAggregateParser
- refactor: cleanup shared validation helpers
- refactor: update validation and builder layers for SelectNode AST
- refactor: make SelectNode the canonical parser AST for nested projections
- feat: introduce SelectValidationRule for SELECT projection semantics
- refactor: rename projection SelectModel to SelectNode
- test(remaining): update validation, caching, security, dapper, and builder tests
- test(projection): update projection and integration tests for SelectModel
- test(parsers): update parser tests to assert SelectModel objects
- feat(source): wire remaining builders and extensions to SelectModel
- refactor(projection): update downstream consumers to use SelectModel
- feat(parsers): update all select parsers to emit List<SelectModel>
- feat(projection): introduce SelectModel AST and update QueryOptions.Select type
- tests: add end-to-end having validation tests to parser test suites
- tests: update Dapper having integration test to DSL syntax
- tests: update HAVING validation tests for aggregate declaration checks
- tests: update DSL having parser tests for new grammar
- validation: enforce declared aggregate references in HAVING
- parsers: centralize DSL aggregate grammar in AggregateGrammar
- Tests: add parser-level validation tests for DSL and FQL
- ExpressionBuilder: use FilterOperators for operator support check
- DSL: document AST contract and use FilterOperators for grammar validation
- FQL: complete HAVING operator set and remove redundant converter validation
- feat(parser): reject unsupported operators in DSL Having parser
- Revert "test(integration): update sort syntax in mixed aggregate sort test"
- test: add comprehensive aggregate parser tests and reorganize sort parser tests
- refactor(models): rename SortOption to SortNode
- test(integration): update sort syntax in mixed aggregate sort test
- test(validation): add COUNT target validation tests for aggregate sort
- test(parser): update DSL sort parser tests for new aggregate syntax
- feat(validation): enforce COUNT targets collection-only in sort
- feat(parser): add descriptive comments to aggregate sort parser
- refactor(parser): replace legacy aggregate sort syntax with colon-separated format
- refactor(validation): remove AggregateAliasValidationRule
- test(aggregate-sort): update tests for wildcard rejection and normalized AST
- refactor(builders): update aggregate and sort builders for enum-based AST
- feat(validation): add aggregate validation rules and error codes
- feat(parsers): reject wildcard aggregates and normalize aggregate sort AST
- refactor: rename SortParser to DslSortParser
- test(projection): add alias integration tests
- test(fql): add nested alias parser tests
- test(dsl): add nested alias parser tests
- feat(builder): propagate aliases and detect conflicts in MergeTree
- feat(fql): add nested alias parsing to FqlSelectParser
- feat(dsl): add nested alias parsing to DslSelectParser
- test(di): fix namespace to match folder structure
- test(projection): add nested projection integration tests
- test(fql): add nested projection parser tests
- test(dsl): add nested projection parser tests
- fix(governance): skip ValidateOrThrow in non-strict mode
- feat(fql): add ParseToSelectionTree for nested projection support
- feat(dsl): add ParseToSelectionTree for nested projection support
- test: add aggregate alias validation and builder tests
- test: add DSL and FQL parser aggregate alias tests
- feat: update AggregateBuilder fluent API for optional aliases
- feat: enforce non-empty alias syntax in FQL aggregate parser
- feat: enforce non-empty alias syntax in DSL aggregate parser
- feat: add aggregate alias semantic validation
- fix(tests): align Dapper integration and FQL parser tests with colon alias syntax
- feat(select): add DSL colon alias parsing to DslSelectParser
- refactor(parser): rename HavingParser to DslHavingParser
- refactor: restrict include to navigation property paths only
-  merge: shared model migration and test modernization (#11)
- test: finalize DialectTests migration to shared model registry
- test: update remaining test files for shared model compatibility
- test: update integration, projection, security, and validation tests
- test: update Dapper integration and security tests for shared model
- test: update Dapper SQL translation tests for shared model
- test: update builders, caching, filters, and resolver expectations
- test: add new test infrastructure for shared model
- refactor: remove old per-test fixtures and legacy FlexQueryCore tests
- feat: add cycle detection and shared model metadata
- merge feature/regression test to main branch (#10)
- feat(dsl): adopt function-first aggregate grammar
- refactor(parsers): split shared SelectParser by language
- refactor: unify parser exceptions under FlexQueryException
- test(dapper): add SqlJoinBuilder unit tests
- test(dapper): add SqlCountBuilder, SqlHavingBuilder, SqlSelectBuilder unit tests
- refactor(tests): split ValidationRuleTests into one file per rule
- refactor(tests): reorganize test files into structured feature folders
- test: add comprehensive unit test suites for Core, AspNetCore, OpenApi, and Diagnostics
- refactor(core): make global config immutable after first call; add thread-safe registries and tests