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"

Đang mở
#3,655 3 bình luận 4 reaction 2 người được giao Được @RubenCerna2079 nhận Xem trên GitHub
auto-config bug cri
Ngôn ngữ chính
C#
Star
1.5k
Fork
370
Merge trung bình
3 ngày 22 giờ
Pull request đã merge (30 ngày)
9

Mô tả

### 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)

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.