Azure / Azure/data-api-builder

[Bug]: `autoentities` in a child configuration file (referenced via `data-source-files`) is not recognized — validation fails with "No entities found"

Abierto
#3,655 3 comentarios 4 reacciones 2 asignados Reclamado por @RubenCerna2079 Ver en GitHub
auto-config bug cri
Lenguaje dominante
C#
Estrellas
1.5k
Forks
370
Merge medio
3 d 17 h
PR fusionados (30 d)
8

Descripción

### Description

When using multiple configuration files (one top-level file referencing others via `data-source-files`), `autoentities` defined in a **child** configuration file is not expanded during configuration validation. Validation fails with:

```
Config '.json': No entities found. At least one entity must be defined or discovered from autoentities when a data source is configured.
fail: Config is invalid.
```

The same `autoentities` block works correctly when placed in the **top-level** configuration file. Only child files (referenced through `data-source-files`) are affected.

This appears to contradict the documented multi-file rules, which state that **every** configuration file may satisfy the entities requirement with either `entities` **or** `autoentities`:

> Multiple configuration rules
> - Every configuration file must include the `data-source` property.
> - Every configuration file must include the `entities` property (or autoentities).

(See: Configuration schema reference — "Data source files" / "Multiple configuration rules".)

### Version

Data API builder 2.0.8

### Steps to reproduce

1. Create a top-level config that references a child config and uses `autoentities` itself:

```json
// dab-config.json (top-level)
{
"$schema": "https://github.com/Azure/data-api-builder/releases/download/v2.0.8/dab.draft.schema.json",
"data-source": { "database-type": "mssql", "connection-string": "@env('CONN_A')" },
"data-source-files": [ "dab-config.child.json" ],
"runtime": {
"mcp": { "enabled": true },
"host": { "mode": "production", "authentication": { "provider": "Unauthenticated" } }
},
"autoentities": {
"def-a": {
"patterns": { "name": "a_{object}", "include": [ "dbo.TableOne" ] },
"permissions": [ { "role": "anonymous", "actions": [ { "action": "read" } ] } ]
}
}
}
```

2. Create a child config that uses `autoentities` (no explicit `entities`):

```json
// dab-config.child.json
{
"$schema": "https://github.com/Azure/data-api-builder/releases/download/v2.0.8/dab.draft.schema.json",
"data-source": { "database-type": "mssql", "connection-string": "@env('CONN_B')" },
"autoentities": {
"def-b": {
"patterns": { "name": "b_{object}", "include": [ "dbo.TableTwo" ] },
"permissions": [ { "role": "anonymous", "actions": [ { "action": "read" } ] } ]
}
}
}
```

3. Run validation:

```
dab validate -c dab-config.json
```

### Expected behavior

Validation passes. The child file's `autoentities` is expanded into entities (with the `b_` prefix), exactly as documented and as it works in the top-level file.

### Actual behavior

Validation fails:

```
The config satisfies the schema requirements.
fail: Config '.json': No entities found. At least one entity must be defined or discovered from autoentities when a data source is configured.
fail: Config is invalid.
```

Notes:
- Replacing the child's `autoentities` with explicit `entities` makes validation pass and the multi-database setup works correctly.
- During an earlier (looser) run the child entities did appear in REST-path logging at runtime, yet schema validation still reported "No entities found" — suggesting the autoentities expansion is performed for the top-level config only and skipped for child configs at validation time.

### Workaround

Define explicit `entities` in child configuration files instead of `autoentities`. Keep `autoentities` only in the top-level file.

### Environment

- Data API builder: 2.0.8
- Database type: MSSQL (both data sources)
- OS: Windows
- Scenario: single DAB process serving two databases via `data-source-files`, MCP enabled (stdio)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.