bcquality/microsoft/knowledge/data-modeling/table-relation-extensions-are-additive-and-top-down.md
Jesper Schulz-Wedde b6da405376 Improve partner onboarding and documentation navigation
Lead with a complete plugin quick start and add task-oriented usage, troubleshooting, customization, and contribution guides. Preserve the broader plugin framing, correct conflicting contract guidance, support Agents folder reviews, and align repository validation. Convert existing sample references to clickable links without changing knowledge rules.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-09 17:25:29 +02:00

1.7 KiB

bc-version domain keywords technologies countries application-area
all
data-modeling
tablerelation
tableextension
enumextension
additive
top-down
unconditional-relation
al
w1
all

Design TableRelation branches for additive top-down extension

Description

A tableextension can add to an existing TableRelation, but the combined relation is evaluated top-down after the original value. The first unconditional relation wins. An extension branch appended after an unconditional base relation is therefore unreachable, even though the extension compiles and appears to describe the new enum value correctly.

Best Practice

When a relation is designed to follow an extensible enum, express the base cases as conditional branches and leave no unconditional catch-all ahead of future extension branches. An enum extension can then append a condition for its new value. When extending a field you do not own, inspect the original TableRelation; do not claim that an appended condition overrides an unconditional relation.

See sample: table-relation-extensions-are-additive-and-top-down.good.al.

Anti Pattern

A base field has an unconditional TableRelation = Customer; and a tableextension adds if (Type = const(Resource)) Resource. The original unconditional branch always wins, so the new enum value still validates and looks up against Customer. The concern is evaluation order, not ValidateTableRelation; free-form input is covered separately by security guidance.

See sample: table-relation-extensions-are-additive-and-top-down.bad.al.