Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Konfigurationsinställningar för databasentiteter.
Health
| Property | Description |
|---|---|
entities.entity-name.health.enabled |
Aktiverar hälsokontroller för entiteten (både REST- och GraphQL-slutpunkter) |
entities.entity-name.health.first |
Antal rader som returneras i hälsokontrollfrågan (intervall: 1–500) |
entities.entity-name.health.threshold-ms |
Maximal varaktighet i millisekunder för hälsokontrollfråga (min: Ett) |
Description
| Property | Description |
|---|---|
entities.entity-name.description |
Läsbar beskrivning av entiteten |
Fields
| Property | Description |
|---|---|
entities.entity-name.fields[].name |
Databasfältnamn (krävs) |
entities.entity-name.fields[].alias |
API-exponerat namn (ersätter mappningar) |
entities.entity-name.fields[].description |
Beskrivning av fält som kan läsas av människor |
entities.entity-name.fields[].primary-key |
Markerar fältet som en primärnyckel (ersätter nyckelfält) |
Source
| Property | Description |
|---|---|
entities.entity-name.source.type |
Objekttyp: table, vieweller stored-procedure |
entities.entity-name.source.object |
Namnet på databasobjektet |
entities.entity-name.source.object-description |
Läsbar beskrivning av databasobjektet |
entities.entity-name.source.parameters |
Parametrar för lagrade procedurer eller funktioner |
entities.entity-name.source.key-fields |
|
entities.entity-name.mappings |
|
REST
| Property | Description |
|---|---|
entities.entity-name.rest.enabled |
Aktiverar REST för den här entiteten |
entities.entity-name.rest.path |
Anpassad väg för REST-slutpunkt |
entities.entity-name.rest.methods |
Tillåtna REST-metoder: get, post, put, , patchdelete |
GraphQL
| Property | Description |
|---|---|
entities.entity-name.graphql.type |
Skriv namn eller objekt med singular och plural |
entities.entity-name.graphql.operation |
Åtgärdstyp: query eller mutation |
entities.entity-name.graphql.enabled |
Aktiverar GraphQL för den här entiteten |
Permissions
| Property | Description |
|---|---|
entities.entity-name.permissions[].role |
Rollnamnssträng |
entities.entity-name.permissions[].actions |
En eller flera av: create, read, update, delete, execute |
Relationships
| Property | Description |
|---|---|
entities.entity-name.relationships.relationship-name.cardinality |
one eller many |
entities.entity-name.relationships.relationship-name.target.entity |
Namn på målentiteten |
entities.entity-name.relationships.relationship-name.source.fields |
Fält från den här entiteten som används i relationen |
entities.entity-name.relationships.relationship-name.target.fields |
Fält från målentitet |
entities.entity-name.relationships.relationship-name.linking.object |
Kopplingsobjekt som används för många-till-många-relationer |
entities.entity-name.relationships.relationship-name.linking.source.fields |
Fält från källentitet som används i koppling |
entities.entity-name.relationships.relationship-name.linking.target.fields |
Fält från målentitet som används i koppling |
Cache
| Property | Description |
|---|---|
entities.entity-name.cache.enabled |
Aktiverar cachelagring av svar för entiteten |
entities.entity-name.cache.ttl-seconds |
Cachelagrade time-to-live i sekunder |
entities.entity-name.cache.level |
Cachenivå: L1 (endast minnesinternt) eller L1L2 (minnesinternt + distribuerat) |
MCP
| Property | Description |
|---|---|
entities.entity-name.mcp |
Objekt som styr MCP-deltagande (Model Context Protocol) för entiteten |
entities.entity-name.mcp.dml-tools |
Aktiverar eller inaktiverar DML-verktyg (datamanipuleringsspråk) för entiteten |
entities.entity-name.mcp.custom-tool |
Registrerar den lagrade proceduren som ett namngivet MCP-verktyg (endast lagrade procedurentiteter) |
Formatöversikt
{
"entities": {
"{entity-name}": {
"description": <string>,
"rest": {
"enabled": <boolean> // default: true
"path": <string> // default: "{entity-name}"
"methods": ["GET", "POST"] // default: ["GET", "POST"]
},
"graphql": {
"enabled": <boolean> // default: true
"type": {
"singular": <string>,
"plural": <string>
},
"operation": "query" | "mutation" // default: "query"
},
"source": {
"object": <string>,
"object-description": <string>,
"type": "view" | "stored-procedure" | "table",
"key-fields": [<string>], // DEPRECATED: use fields[].primary-key
"parameters": [ // array format (preferred)
{
"name": "<parameter-name>",
"required": <boolean>,
"default": <value>,
"description": "<string>"
}
]
},
"fields": [
{
"name": "<database-field-name>",
"alias": "<api-exposed-name>",
"description": "<string>",
"primary-key": <boolean>
}
],
"mappings": { // DEPRECATED: use fields[].alias
"<database-field-name>": <string>
},
"relationships": {
"<relationship-name>": {
"cardinality": "one" | "many",
"target.entity": <string>,
"source.fields": [<string>],
"target.fields": [<string>],
"linking.object": <string>,
"linking.source.fields": [<string>],
"linking.target.fields": [<string>]
}
},
"permissions": [
{
"role": "anonymous" | "authenticated" | <custom-role>,
"actions": ["create", "read", "update", "delete", "execute", "*"],
"fields": {
"include": [<string>],
"exclude": [<string>]
},
"policy": {
"database": <string>
}
}
],
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level": "L1" | "L1L2" // default: "L1L2"
},
"mcp": {
"dml-tools": <boolean>, // default: true
"custom-tool": <boolean> // stored-procedure only; default: false
}
}
}
}
Källa (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
source |
object | ✔️ Ja | None |
Databaskällans information om entiteten.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.source |
object |
string | ✔️ Ja | None |
entities.{entity-name}.source |
object-description |
string | ❌ Nej | None |
entities.{entity-name}.source |
type |
enum (table, view, stored-procedure) |
✔️ Ja | None |
entities.{entity-name}.source |
key-fields |
strängmatris | ❌ Nej* | None |
entities.{entity-name}.source |
parameters |
matris eller objekt | ❌ Nej** | None |
*
key-fields krävs endast när type är view och matrisen fields inte används. Värdet representerar de primära nycklarna.
Varning
Boendet key-fields är inaktuellt i DAB 2.0. Använd matrisen fields med primary-key: true i stället. Schemat tillämpar detta fields och key-fields kan inte samexistera på samma entitet.
**
parameters krävs endast när type är stored-procedure och endast för parametrar med standardvärden. Parameterns datatyp härleds. Parametrar utan standard kan utelämnas.
object-description är en valfri beskrivning av det underliggande databasobjektet som kan läsas av människor. Det här värdet visas under IDENTIFIERING av MCP-verktyg, vilket hjälper AI-agenter att förstå syftet med entiteten.
Tip
Om objektet tillhör dbo schema är det valfritt att ange schemat. Dessutom kan hakparenteser runt objektnamn (till exempel dbo.Users jämfört med [dbo].[Users]) användas vid behov.
Format
{
"entities": {
"{entity-name}": {
"source": {
"object": <string>,
"object-description": <string>,
"type": <"view" | "stored-procedure" | "table">,
"key-fields": [ <string> ], // DEPRECATED: use fields[].primary-key
"parameters": [ // array format (preferred)
{
"name": "<parameter-name>",
"required": <boolean>,
"default": <value>,
"description": "<string>"
}
]
}
}
}
}
Matrisformat för parametrar
I DAB 2.0-förhandsversionen parameters har stöd för ett strukturerat matrisformat med mer omfattande metadata. Varje parameter är ett objekt med följande egenskaper:
| Property | Type | Required | Description |
|---|---|---|---|
name |
string | ✔️ Ja | Parameternamn (utan prefixet @ ) |
required |
boolean | ❌ Nej | Om parametern krävs (true) eller valfri (false) |
default |
någon | ❌ Nej | Standardvärde som används när parametern inte anges |
description |
string | ❌ Nej | Beskrivning av parametern som kan läsas av människa |
Exempel (matrisformat – föredraget)
{
"entities": {
"GetBookById": {
"source": {
"type": "stored-procedure",
"object": "dbo.get_book_by_id",
"parameters": [
{
"name": "id",
"required": true,
"default": null,
"description": "The unique identifier of the book"
}
]
}
}
}
}
Varning
Ordlisteformatet för parameters (till exempel { "id": 0 }) är inaktuellt i DAB 2.0. Använd föregående matrisformat. Det gamla formatet accepteras fortfarande för bakåtkompatibilitet men tas bort i en framtida version.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Behörigheter (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.permissions |
role |
string | ✔️ Ja | None |
Anger det rollnamn som behörigheter gäller för. Använd systemroller (Anonymous, Authenticated) eller anpassade roller som definierats i din identitetsprovider.
Tip
Detaljerad information om rollutvärdering, systemroller och X-MS-API-ROLE rubriken finns i Översikt över auktorisering.
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"role": <"Anonymous" | "Authenticated" | "custom-role">,
"actions": [ <string> ]
}
]
}
}
}
Example
{
"entities": {
"User": {
"permissions": [
{
"role": "reader",
"actions": ["read"]
}
]
}
}
}
Arv av roll
DAB 2.0 introducerar rollarv för entitetsbehörigheter. När en roll inte uttryckligen har konfigurerats för en entitet ärver den behörigheter från en bredare roll med hjälp av följande kedja:
named-role → authenticated → anonymous
- Om
authenticatedinte har konfigurerats för en entitet ärver den frånanonymous. - Om en namngiven roll inte har konfigurerats ärver den från
authenticated, eller frånanonymousomauthenticatedden också saknas.
Det innebär att du kan definiera behörigheter en gång på anonymous och varje bredare roll får samma åtkomst automatiskt, utan duplicering krävs.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Example
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
Med den här konfigurationen anonymouskan , authenticatedoch alla icke-konfigurerade namngivna roller läsa Book. Använd dab configure --show-effective-permissions för att se de lösta behörigheterna för varje entitet efter att arv har tillämpats.
Åtgärder (entitetsnamnsentiteter för strängmatrisbehörigheter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.permissions |
actions |
oneOf [sträng, matris] | ✔️ Ja | None |
En strängmatris som beskriver vilka åtgärder som tillåts för den associerade rollen.
| Action | SQL-åtgärd |
|---|---|
* |
Alla åtgärder |
create |
Infoga en eller flera* rader |
read |
Markera en eller flera rader |
update |
Ändra en eller flera* rader |
delete |
Ta bort en eller flera* rader |
execute |
Kör en lagrad procedur |
* Flera åtgärder stöds för närvarande endast i GraphQL.
Note
För lagrade procedurer expanderas åtgärden jokertecken (*) endast till åtgärden execute. För tabeller och vyer expanderas den till create, read, updateoch delete.
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": [ <string> ]
}
]
}
}
}
Example
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": [ "*" ] // equivalent to create, read, update, delete
}
]
}
}
}
Alternativt format (endast sträng, när type=stored-procedure)
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": <string>
}
]
}
}
}
Example
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": "*" // equivalent to execute
}
]
}
}
}
Åtgärder (objektmatrisbehörigheter entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.permissions |
actions |
strängmatris | ✔️ Ja | None |
En objektmatris som beskriver vilka åtgärder som tillåts för den associerade rollen.
Note
För lagrade procedurer expanderas åtgärden jokertecken (*) till endast execute. För tabeller/vyer expanderas den till create, read, updateoch delete.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.permissions.actions[] |
action |
string | ✔️ Ja | None |
entities.{entity-name}.permissions.actions[] |
fields |
object | ❌ Nej | None |
entities.{entity-name}.permissions.actions[] |
policy |
object | ❌ Nej | None |
entities.{entity-name}.permissions.actions[].policy |
database |
string | ✔️ Ja | None |
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"role": <string>,
"actions": [
{
"action": <string>,
"fields": <array of strings>,
"policy": <object>
}
]
}
]
}
}
Example
Detta ger read behörighet till auditor för entiteten User , med fält- och principbegränsningar.
{
"entities": {
"User": {
"permissions": [
{
"role": "auditor",
"actions": [
{
"action": "read",
"fields": {
"include": ["*"],
"exclude": ["last_login"]
},
"policy": {
"database": "@item.IsAdmin eq false"
}
}
]
}
]
}
}
}
Principanteckningar
Databasprinciper filtrerar frågeresultat med hjälp av predikat i OData-stil. Använd @item.<field> för att referera till entitetsfält och @claims.<type> för att mata in autentiserade användaranspråk.
| Aspekt | Detaljer |
|---|---|
| Syntax | OData-predikat (eq, ne, and, or, gt, ) lt |
| Fältreferens |
@item.<field> (använd mappat namn om tillämpligt) |
| Anspråksreferens | @claims.<claimType> |
| Åtgärder som stöds |
read, updatedelete |
| Stöds inte |
create, execute |
Tip
Omfattande vägledning om databasprinciper, inklusive ersättning av anspråk och felsökning, finns i Konfigurera databasprinciper.
Typ (GraphQL-entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql |
type |
object | ❌ Nej | {entity-name} |
Anger namngivningskonventionen för en entitet i GraphQL-schemat.
Format
{
"entities": {
"{entity-name}": {
"graphql": {
"type": {
"singular": "<string>",
"plural": "<string>"
}
}
}
}
}
Kapslade egenskaper
| Parent | Property | Required | Type | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql.type |
singular |
✔️ Ja* | string | None |
entities.{entity-name}.graphql.type |
plural |
❌ Nej | string | N/A (standardvärdet är singularvärde) |
*
singular krävs när type anges som ett objekt. När type är en vanlig sträng används strängen som singularnamn.
Example
Configuration
{
"entities": {
"User": {
"graphql": {
"type": {
"singular": "User",
"plural": "Users"
}
}
}
}
}
GraphQL-fråga
{
Users {
items {
id
name
age
isAdmin
}
}
}
GraphQL-svar
{
"data": {
"Users": {
"items": [
{
"id": 1,
"name": "Alice",
"age": 30,
"isAdmin": true
},
{
"id": 2,
"name": "Bob",
"age": 25,
"isAdmin": false
}
// ...
]
}
}
}
Åtgärd (GraphQL-entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql |
operation |
uppräkningssträng | ❌ Nej | mutation |
Anger om åtgärden stored-procedure ska visas under Query eller Mutation.
Note
När {entity-name}.type är inställt på stored-procedureskapas automatiskt en ny GraphQL-typ executeXXX . Den här operation egenskapen styr var den här typen placeras i GraphQL-schemat. Det finns ingen funktionspåverkan, bara schemahygien.
Format
{
"entities": {
"{entity-name}": {
"graphql": {
"operation": "query" | "mutation"
}
}
}
}
Exempel: åtgärd
När operation är inställt på query
type Query {
executeGetUserDetails(userId: Int!): GetUserDetailsResponse
}
När operation är inställt på mutation
type Mutation {
executeGetUserDetails(userId: Int!): GetUserDetailsResponse
}
Aktiverad (GraphQL-entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql |
enabled |
boolean | ❌ Nej | True |
Låter utvecklare selektivt inkludera entiteter i GraphQL-schemat.
Format
{
"entities": {
"{entity-name}": {
"graphql": {
"enabled": <true> (default) | <false>
}
}
}
}
REST (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.rest |
enabled |
boolean | ❌ Nej | True |
entities.rest |
path |
string | ❌ Nej | /{entity-name} |
entities.{entity-name}.rest |
methods |
strängmatris | ❌ Nej* | POST |
* Egenskapen methods är endast för stored-procedure slutpunkter.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Format
{
"entities": {
"{entity-name}": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string; default: "{entity-name}">
}
}
}
}
Beskrivning (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
description |
string | ❌ Nej | None |
En valfri beskrivning av entiteten som kan läsas av människor. Det här värdet visas i den genererade API-dokumentationen och som en kommentar i GraphQL-schemat.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Format
{
"entities": {
"{entity-name}": {
"description": "<string>"
}
}
}
Example
{
"entities": {
"Book": {
"description": "Represents a book in the catalog with title, author, and pricing information.",
"source": {
"object": "dbo.books",
"type": "table"
}
}
}
}
Fält (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
fields |
array | ❌ Nej | None |
Definierar metadata för enskilda databasfält, inklusive alias, beskrivningar och primärnyckelbeteckningar. Matrisen fields ersätter både mappings (via alias egenskapen) och source.key-fields (via egenskapen primary-key ) i en enda enhetlig struktur.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.fields[] |
name |
string | ✔️ Ja | None |
entities.{entity-name}.fields[] |
alias |
string | ❌ Nej | None |
entities.{entity-name}.fields[] |
description |
string | ❌ Nej | None |
entities.{entity-name}.fields[] |
primary-key |
boolean | ❌ Nej | false |
Format
{
"entities": {
"{entity-name}": {
"fields": [
{
"name": "<database-field-name>",
"alias": "<api-exposed-name>",
"description": "<string>",
"primary-key": <boolean>
}
]
}
}
}
Example
{
"entities": {
"Book": {
"source": {
"object": "dbo.books",
"type": "table"
},
"fields": [
{
"name": "id",
"description": "Unique book identifier",
"primary-key": true
},
{
"name": "sku_title",
"alias": "title",
"description": "The display title of the book"
},
{
"name": "sku_status",
"alias": "status"
}
]
}
}
}
I det här exemplet id anges som primärnyckel (ersätter behovet av source.key-fields), medan sku_title och sku_status aliaseras som title och status (ersätter behovet av mappings).
Important
Schemat tillämpar som fields inte kan samexistera med mappings eller source.key-fields på samma entitet. Migrera till fields och ta bort de inaktuella egenskaperna.
Mappningar (entitetsnamnentiteter)
Varning
Boendet mappings är inaktuellt i DAB 2.0. Använd matrisen fields med egenskapen alias i stället. Schemat tillämpar detta fields och mappings kan inte samexistera på samma entitet.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
mappings |
object | ❌ Nej | None |
Aktiverar anpassade alias eller exponerade namn för databasobjektfält.
Important
För entiteter med GraphQL aktiverat måste det konfigurerade exponerade namnet uppfylla kraven för GraphQL-namn.
Format
{
"entities": {
"{entity-name}": {
"mappings": {
"<field-1-name>": "<field-1-alias>",
"<field-2-name>": "<field-2-alias>",
"<field-3-name>": "<field-3-alias>"
}
}
}
}
Examples
Databastabell
CREATE TABLE Books
(
id INT,
sku_title VARCHAR(50),
sku_status VARCHAR(50),
)
Configuration
{
"entities": {
"Books": {
...
"mappings": {
"sku_title": "title",
"sku_status": "status"
}
}
}
}
Cacheminne (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
cache |
object | ❌ Nej | None |
Aktiverar och konfigurerar cachelagring för entiteten.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.cache |
enabled |
boolean | ❌ Nej | False |
entities.{entity-name}.cache |
ttl-seconds |
integer | ❌ Nej | - |
entities.{entity-name}.cache |
level |
uppräkning (L1 | L1L2) |
❌ Nej | L1L2 |
Format
{
"entities": {
"{entity-name}": {
"cache": {
"enabled": <true> (default) | <false>,
"ttl-seconds": <integer; default: 5>,
"level": <"L1" | "L1L2"> (default: "L1L2")
}
}
}
}
Egenskapen level styr vilka cachenivåer som används:
| Värde | Description |
|---|---|
L1 |
Endast minnesintern cache. Snabbast, men inte delat mellan instanser. |
L1L2 |
Minnesintern cache plus distribuerad cache (Redis). Delas mellan utskalade instanser. Default. |
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Note
När det inte anges ttl-seconds ärver det globala värdet som anges under runtime.cache.
Example
{
"entities": {
"Author": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level": "L1"
}
}
}
}
Relationer (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
relationships |
object | ❌ Nej | None |
Konfigurerar hur GraphQL-entiteter är relaterade till andra exponerade entiteter. Mer information finns i Data API builder relationsuppdelning.
Note
Egenskapen relationship-name för varje relation måste vara unik för alla relationer för den entiteten.
Kapslade egenskaper
Dessa egenskaper används i olika kombinationer beroende på relationens kardinalitet.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.relationships |
cardinality |
string | ✔️ Ja | None |
entities.{entity-name}.relationships |
target.entity |
string | ✔️ Ja | None |
entities.{entity-name}.relationships |
target.fields |
strängmatris | ❌ Nej | None |
entities.{entity-name}.relationships |
source.fields |
strängmatris | ❌ Nej | None |
entities.{entity-name}.relationships |
linking.object |
string | ❌ Nej | None |
entities.{entity-name}.relationships |
linking.source.fields |
strängmatris | ❌ Nej | None |
entities.{entity-name}.relationships |
linking.target.fields |
strängmatris | ❌ Nej | None |
Format
{
"entities": {
"{entity-name}": {
"relationships": {
"<relationship-name>": {
"cardinality": "one" | "many",
"target.entity": "<string>",
"source.fields": ["<string>"],
"target.fields": ["<string>"],
"linking.object": "<string>",
"linking.source.fields": ["<string>"],
"linking.target.fields": ["<string>"]
}
}
}
}
}
| Relationship | Cardinality | Example |
|---|---|---|
| one-to-many | many |
En kategorientitet kan relatera till många att göra-entiteter |
| many-to-one | one |
Många att göra-entiteter kan relatera till en kategorientitet |
| many-to-many | many |
En att göra-entitet kan relatera till många användarentiteter, och en användarentitet kan relatera till många att göra-entiteter |
Exempel: En-till-en-kardinalitet
Var Profile och en är relaterad till exakt en User, och var User och en har exakt en relaterad Profile.
{
"entities": {
"User": {
"relationships": {
"user_profile": {
"cardinality": "one",
"target.entity": "Profile",
"source.fields": [ "id" ],
"target.fields": [ "user_id" ]
}
}
},
"Profile": {
...
}
}
}
GraphQL-schema
type User
{
id: Int!
...
profile: Profile
}
Command-line
dab update User \
--relationship profile \
--target.entity Profile \
--cardinality one \
--relationship.fields "id:user_id"
Exempel: Kardinalitet 1-till-många
En Category kan ha en eller flera relaterade Book entiteter, medan var och Book en kan ha en relaterad Category.
{
"entities": {
"Book": {
...
},
"Category": {
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
GraphQL-schema
type Category
{
id: Int!
...
books: [BookConnection]!
}
Kommandorad
dab update Category \
--relationship category_books \
--target.entity Book \
--cardinality many \
--relationship.fields "id:category_id"
Exempel: Kardinalitet många-till-en
Många Book entiteter kan ha en relaterad Category, medan en Category kan ha en eller flera relaterade Book poster.
{
"entities": {
"Book": {
"relationships": {
"books_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
},
"Category": {
...
}
}
}
}
GraphQL-schema
type Book
{
id: Int!
...
category: Category
}
Kommandorad
dab update Book \
--relationship books_category \
--target.entity "Category" \
--cardinality one \
--relationship.fields "category_id:id"
Exempel: Kardinalitet för många-till-många
Många Book entiteter kan ha många relaterade Author entiteter, medan många Author entiteter kan ha många relaterade Book poster.
Note
Den här relationen är möjlig med en tredje tabell, dbo.books_authors, som vi kallar länkobjektet.
{
"entities": {
"Book": {
"relationships": {
...,
"books_authors": {
"cardinality": "many",
"target.entity": "Author",
"source.fields": [ "id" ],
"target.fields": [ "id" ],
"linking.object": "dbo.books_authors",
"linking.source.fields": [ "book_id" ],
"linking.target.fields": [ "author_id" ]
}
},
"Category": {
...
},
"Author": {
...
}
}
}
}
GraphQL-schema
type Book
{
id: Int!
...
authors: [AuthorConnection]!
}
type Author
{
id: Int!
...
books: [BookConnection]!
}
Kommandorad
dab update Book \
--relationship books_authors \
--target.entity "Author" \
--cardinality many \
--relationship.fields "id:id" \
--linking.object "dbo.books_authors" \
--linking.source.fields "book_id" \
--linking.target.fields "author_id"
Hälsa (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
health |
object | ❌ Nej | None |
Aktiverar och konfigurerar hälsokontroller för entiteten.
Kapslade egenskaper
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.health |
enabled |
boolean | ❌ Nej | true |
entities.{entity-name}.health |
first |
integer | ❌ Nej | 100 |
entities.{entity-name}.health |
threshold-ms |
integer | ❌ Nej | 1000 |
Example
{
"entities": {
"Book": {
"health": {
"enabled": true,
"first": 3,
"threshold-ms": 500
}
}
}
}
Note
Värdet first måste vara mindre än eller lika med inställningen runtime.pagination.max-page-size . Mindre värden hjälper hälsokontroller att slutföras snabbare.
Important
Lagrade procedurer undantas automatiskt från entitetshälsokontroller eftersom de kräver parametrar och kanske inte är deterministiska.
MCP (entitetsnamnentiteter)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
mcp |
object | ❌ Nej | aktiverad som standard när den utelämnas |
Styr MCP-deltagandet för entiteten. När MCP är aktiverat globalt deltar entiteter som standard. Använd den här egenskapen för att välja bort eller för att aktivera anpassade MCP-verktyg för lagrade procedurentiteter.
Note
Funktionerna i Data API Builder 2.0 som beskrivs i det här avsnittet är för närvarande i förhandsversion och kan komma att ändras före allmän tillgänglighet. Mer information finns i Nyheter i version 2.0.
Objektformat
Använd objektformatet för detaljerad kontroll:
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.mcp |
dml-tools |
boolean | ❌ Nej | true |
entities.{entity-name}.mcp |
custom-tool |
boolean | ❌ Nej | false |
{
"entities": {
"Book": {
"mcp": {
"dml-tools": true
}
}
}
}
Anpassat verktyg (endast lagrade procedurer)
För entiteter med lagrad procedur anger du custom-tool till för att true registrera proceduren som ett namngivet MCP-verktyg:
{
"entities": {
"GetBookById": {
"source": {
"type": "stored-procedure",
"object": "dbo.get_book_by_id"
},
"mcp": {
"custom-tool": true
},
"permissions": [
{
"role": "anonymous",
"actions": ["execute"]
}
]
}
}
}
Important
Egenskapen custom-tool är endast giltig för entiteter med lagrad procedur. Om du ställer in den i en tabell eller visar entitet resulterar det i ett konfigurationsfel.
CLI-exempel
dab add Book --source books --permissions "anonymous:*" --mcp.dml-tools true
dab add GetBookById --source dbo.get_book_by_id --source.type stored-procedure --permissions "anonymous:execute" --mcp.custom-tool true