Skip to content

[release/10.0] Fix minimal API validation for record structs#64517

Merged
rbhanda merged 2 commits intorelease/10.0from
backport/pr-64514-to-release/10.0
Dec 10, 2025
Merged

[release/10.0] Fix minimal API validation for record structs#64517
rbhanda merged 2 commits intorelease/10.0from
backport/pr-64514-to-release/10.0

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Nov 24, 2025

Backport of #64514 to release/10.0

/cc @captainsafia @copilot

Description

This backport updates the minimal API runtime validation logic to correctly treat user-defined value types—including record struct parameters and nested properties—as complex types. Previously, the validation pipeline only considered classes complex, causing record structs without top-level validation attributes to be skipped entirely.

Fixes #64513

Customer Impact

Minimal API users defining request DTOs as record struct were unable to rely on validation attributes inside those types. This led to missing validation errors and inconsistent behavior between classes and record structs. The fix brings record struct behavior in line with classes and improves model consistency without requiring user code changes.

Regression?

  • Yes
  • No

Risk

  • High
  • Medium
  • Low

The change expands the definition of “complex type” to include non-primitive value types. This aligns with user expectations and matches typical model binding behavior. Existing special-cased primitive and framework types remain excluded, and new automated tests cover the updated behavior.

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

Copilot AI and others added 2 commits November 24, 2025 21:45
…IsComplexType

Co-authored-by: captainsafia <1857993+captainsafia@users.noreply.github.com>
@captainsafia captainsafia added the Servicing-consider Shiproom approval is required for the issue label Nov 24, 2025
@dotnet-policy-service dotnet-policy-service bot added the pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun label Dec 2, 2025
@rbhanda rbhanda added Servicing-approved Shiproom has approved the issue and removed Servicing-consider Shiproom approval is required for the issue labels Dec 10, 2025
@rbhanda rbhanda added this to the 10.0.2 milestone Dec 10, 2025
@rbhanda rbhanda merged commit f0f7699 into release/10.0 Dec 10, 2025
28 checks passed
@rbhanda rbhanda deleted the backport/pr-64514-to-release/10.0 branch December 10, 2025 22:00
@dotnet-policy-service dotnet-policy-service bot modified the milestone: 10.0.2 Dec 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pending-ci-rerun When assigned to a PR indicates that the CI checks should be rerun Servicing-approved Shiproom has approved the issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants