Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nastavení konfigurace pro databázové entity
Health
| Property | Description |
|---|---|
entities.entity-name.health.enabled |
Povolí kontroly stavu pro entitu (koncové body REST i GraphQL). |
entities.entity-name.health.first |
Počet řádků vrácených v dotazu kontroly stavu (rozsah: 1–500) |
entities.entity-name.health.threshold-ms |
Maximální doba trvání v milisekundách pro dotaz kontroly stavu (min: jedna) |
Description
| Property | Description |
|---|---|
entities.entity-name.description |
Popis entity čitelný pro člověka |
Fields
| Property | Description |
|---|---|
entities.entity-name.fields[].name |
Název databázového pole (povinné) |
entities.entity-name.fields[].alias |
Název vystavený rozhraním API (nahrazuje mapování) |
entities.entity-name.fields[].description |
Popis polí čitelný pro člověka |
entities.entity-name.fields[].primary-key |
Označí pole jako primární klíč (nahrazuje pole klíč-pole). |
Source
| Property | Description |
|---|---|
entities.entity-name.source.type |
Typ objektu: table, viewnebo stored-procedure |
entities.entity-name.source.object |
Název databázového objektu |
entities.entity-name.source.object-description |
Popis databázového objektu čitelný pro člověka |
entities.entity-name.source.parameters |
Parametry uložených procedur nebo funkcí |
entities.entity-name.source.key-fields |
|
entities.entity-name.mappings |
|
REST
| Property | Description |
|---|---|
entities.entity-name.rest.enabled |
Povolí rest pro tuto entitu. |
entities.entity-name.rest.path |
Vlastní trasa pro koncový bod REST |
entities.entity-name.rest.methods |
Povolené metody REST: get, post, putpatch,delete |
GraphQL
| Property | Description |
|---|---|
entities.entity-name.graphql.type |
Zadejte název nebo objekt s singularplural |
entities.entity-name.graphql.operation |
Typ operace: query nebo mutation |
entities.entity-name.graphql.enabled |
Povolí pro tuto entitu GraphQL. |
Permissions
| Property | Description |
|---|---|
entities.entity-name.permissions[].role |
Řetězec názvu role |
entities.entity-name.permissions[].actions |
Jeden nebo více z: create, read, update, deleteexecute |
Relationships
| Property | Description |
|---|---|
entities.entity-name.relationships.relationship-name.cardinality |
one nebo many |
entities.entity-name.relationships.relationship-name.target.entity |
Název cílové entity |
entities.entity-name.relationships.relationship-name.source.fields |
Pole z této entity použité v relaci |
entities.entity-name.relationships.relationship-name.target.fields |
Pole z cílové entity |
entities.entity-name.relationships.relationship-name.linking.object |
Objekt spojení použitý pro relace M:N |
entities.entity-name.relationships.relationship-name.linking.source.fields |
Pole ze zdrojové entity použité ve spojení |
entities.entity-name.relationships.relationship-name.linking.target.fields |
Pole z cílové entity použité při spojení |
Cache
| Property | Description |
|---|---|
entities.entity-name.cache.enabled |
Povolí ukládání odpovědí do mezipaměti pro entitu. |
entities.entity-name.cache.ttl-seconds |
Ukládání do mezipaměti v sekundách |
entities.entity-name.cache.level |
Úroveň mezipaměti: L1 (pouze v paměti) nebo L1L2 (v paměti + distribuovaná) |
MCP
| Property | Description |
|---|---|
entities.entity-name.mcp |
Objekt, který řídí účast protokolu MCP (Model Context Protocol) pro entitu |
entities.entity-name.mcp.dml-tools |
Povolí nebo zakáže nástroje jazyka DML (Data Manipulat Language) pro entitu. |
entities.entity-name.mcp.custom-tool |
Zaregistruje uloženou proceduru jako pojmenovaný nástroj MCP (pouze entity uložené procedury). |
Přehled formátu
{
"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
}
}
}
}
Zdroj (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
source |
objekt | ✔️ Ano | None |
Podrobnosti o zdroji databáze entity.
Vnořené vlastnosti
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.source |
object |
řetězec | ✔️ Ano | None |
entities.{entity-name}.source |
object-description |
řetězec | ❌ Ne | None |
entities.{entity-name}.source |
type |
enum (table, view, stored-procedure) |
✔️ Ano | None |
entities.{entity-name}.source |
key-fields |
Řetězcové pole | ❌ Ne* | None |
entities.{entity-name}.source |
parameters |
pole nebo objekt | ❌ Ne** | None |
*
key-fieldsje povinný pouze v případětype, view že pole fields není použito. Hodnota představuje primární klíče.
Výstraha
Vlastnost key-fields je v JAZYCE DAB 2.0 zastaralá.
fields Místo toho použijte poleprimary-key: true. Schéma to vynucuje fields a key-fields nemůže existovat ve stejné entitě.
**
parameters je vyžadován pouze v případě, že type jsou stored-procedure parametry s výchozími hodnotami a pouze pro parametry. Datový typ parametru je odvozen. Parametry bez výchozího nastavení je možné vynechat.
object-description je volitelný popis základního databázového objektu, který je čitelný pro člověka. Tato hodnota se zobrazí během zjišťování nástrojů MCP a pomáhá agentům umělé inteligence porozumět účelu entity.
Tip
Pokud objekt patří do schématu dbo, je zadání schématu volitelné. Hranaté závorky kolem názvů objektů (například dbo.Users vs. [dbo].[Users]) lze použít v případě potřeby.
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>"
}
]
}
}
}
}
Formát pole parametrů
V JAZYCE DAB 2.0 Preview parameters podporuje formát strukturovaného pole s bohatšími metadaty. Každý parametr je objekt s následujícími vlastnostmi:
| Property | Typ | Required | Description |
|---|---|---|---|
name |
řetězec | ✔️ Ano | Název parametru (bez předpony @ ) |
required |
boolean | ❌ Ne | Určuje, jestli je parametr povinný (true) nebo volitelný (false) |
default |
any | ❌ Ne | Výchozí hodnota použitá při nezadaném parametru |
description |
řetězec | ❌ Ne | Popis parametru čitelný pro člověka |
Příklad (formát pole – upřednostňovaný)
{
"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"
}
]
}
}
}
}
Výstraha
Formát slovníku ( parameters například { "id": 0 }) je v JAZYCE DAB 2.0 zastaralý. Použijte předchozí formát pole. Starý formát je stále přijímán kvůli zpětné kompatibilitě, ale bude odebrán v budoucí verzi.
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Oprávnění (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.permissions |
role |
řetězec | ✔️ Ano | None |
Určuje název role, na kterou se vztahují oprávnění. Použijte systémové role (Anonymous, Authenticated) nebo vlastní role definované ve vašem zprostředkovateli identity.
Tip
Podrobné informace o vyhodnocení rolí, systémových rolích a hlavičce najdete v přehleduX-MS-API-ROLE autorizace.
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"role": <"Anonymous" | "Authenticated" | "custom-role">,
"actions": [ <string> ]
}
]
}
}
}
Example
{
"entities": {
"User": {
"permissions": [
{
"role": "reader",
"actions": ["read"]
}
]
}
}
}
Dědičnost rolí
DAB 2.0 zavádí dědičnost rolí pro oprávnění entity. Pokud role není explicitně nakonfigurovaná pro entitu, dědí oprávnění z širší role pomocí následujícího řetězce:
named-role → authenticated → anonymous
- Pokud
authenticatednení pro entitu nakonfigurovaná, dědí zanonymousní . - Pokud pojmenovaná role není nakonfigurovaná, dědí z
authenticatedobjektu , nebo zanonymousní, pokudauthenticatedchybí.
To znamená, že můžete jednou definovat oprávnění anonymous a každá širší role získá stejný přístup automaticky bez nutnosti duplikace.
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Example
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
S touto konfigurací , anonymous, authenticateda všechny nekonfigurované pojmenované role mohou číst Book. Umožňuje dab configure --show-effective-permissions zobrazit vyřešená oprávnění pro každou entitu po použití dědičnosti.
Akce (entity s oprávněními pro pole řetězců)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.permissions |
actions |
oneOf [řetězec, pole] | ✔️ Ano | None |
Pole řetězců s podrobnostmi o tom, jaké operace jsou pro přidruženou roli povolené.
| Action | Operace SQL |
|---|---|
* |
Všechny akce |
create |
Vložení jednoho nebo více řádků* |
read |
Výběr jednoho nebo více řádků |
update |
Úprava jednoho nebo více řádků* |
delete |
Odstranění jednoho nebo více řádků* |
execute |
Spustí uloženou proceduru. |
* V GraphQL je aktuálně podporováno více operací.
Note
U uložených procedur se akce se zástupným znakem (*) rozbalí pouze na akci execute. Pro tabulky a zobrazení se rozbalí na create, read, updatea delete.
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": [ <string> ]
}
]
}
}
}
Example
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": [ "*" ] // equivalent to create, read, update, delete
}
]
}
}
}
Alternativní formát (pouze řetězec, pokud type=stored-procedure)
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": <string>
}
]
}
}
}
Example
{
"entities": {
"{entity-name}": {
"permissions": [
{
"actions": "*" // equivalent to execute
}
]
}
}
}
Akce (entity s názvem entity oprávnění pole objektů)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.permissions |
actions |
Řetězcové pole | ✔️ Ano | None |
Pole objektů s podrobnostmi o tom, jaké operace jsou pro přidruženou roli povolené.
Note
U uložených procedur se akce se zástupným znakem (*) rozbalí pouze na execute. Pro tabulky a zobrazení se rozbalí na create, read, updatea delete.
Vnořené vlastnosti
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.permissions.actions[] |
action |
řetězec | ✔️ Ano | None |
entities.{entity-name}.permissions.actions[] |
fields |
objekt | ❌ Ne | None |
entities.{entity-name}.permissions.actions[] |
policy |
objekt | ❌ Ne | None |
entities.{entity-name}.permissions.actions[].policy |
database |
řetězec | ✔️ Ano | None |
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"role": <string>,
"actions": [
{
"action": <string>,
"fields": <array of strings>,
"policy": <object>
}
]
}
]
}
}
Example
Tím se udělí read oprávnění k auditor entitě User s omezeními polí a zásad.
{
"entities": {
"User": {
"permissions": [
{
"role": "auditor",
"actions": [
{
"action": "read",
"fields": {
"include": ["*"],
"exclude": ["last_login"]
},
"policy": {
"database": "@item.IsAdmin eq false"
}
}
]
}
]
}
}
}
Poznámky k zásadám
Zásady databáze filtruje výsledky dotazů pomocí predikátů ve stylu OData. Slouží @item.<field> k odkazům na pole entit a @claims.<type> k vložení ověřených deklarací identity uživatelů.
| Aspekt | Podrobnosti |
|---|---|
| Syntaxe | Predikáty OData (eq, ne, and, or, gt, lt) |
| Referenční pole |
@item.<field> (pokud je k dispozici, použijte mapovaný název. |
| Referenční informace k deklaraci identity | @claims.<claimType> |
| Podporované akce |
read, updatedelete |
| Není podporováno |
create, execute |
Tip
Podrobné pokyny k zásadám databáze, včetně nahrazení deklarací identity a řešení potíží, najdete v tématu Konfigurace zásad databáze.
Typ (entity s názvem entity GraphQL)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql |
type |
objekt | ❌ Ne | {entity-name} |
Nastaví konvenci vytváření názvů pro entitu ve schématu GraphQL.
Format
{
"entities": {
"{entity-name}": {
"graphql": {
"type": {
"singular": "<string>",
"plural": "<string>"
}
}
}
}
}
Vnořené vlastnosti
| Parent | Property | Required | Typ | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql.type |
singular |
✔️ Ano* | řetězec | None |
entities.{entity-name}.graphql.type |
plural |
❌ Ne | řetězec | Není k dispozici (výchozí hodnota je singulární hodnota) |
*
singular je vyžadován, pokud type je zadán jako objekt. Pokud type je prostý řetězec, tento řetězec se použije jako název jednotného čísla.
Example
Configuration
{
"entities": {
"User": {
"graphql": {
"type": {
"singular": "User",
"plural": "Users"
}
}
}
}
}
Dotaz GraphQL
{
Users {
items {
id
name
age
isAdmin
}
}
}
Odpověď GraphQL
{
"data": {
"Users": {
"items": [
{
"id": 1,
"name": "Alice",
"age": 30,
"isAdmin": true
},
{
"id": 2,
"name": "Bob",
"age": 25,
"isAdmin": false
}
// ...
]
}
}
}
Operace (entity s názvem entity GraphQL)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql |
operation |
enum string | ❌ Ne | mutation |
Určuje, zda se stored-procedure operace zobrazí pod položkou Query nebo Mutation.
Note
Pokud {entity-name}.type je nastavená hodnota stored-procedure, automaticky se vytvoří nový typ executeXXX GraphQL. Tato operation vlastnost určuje, kde je tento typ umístěn ve schématu GraphQL. Není žádný funkční dopad, jen hygiena schématu.
Format
{
"entities": {
"{entity-name}": {
"graphql": {
"operation": "query" | "mutation"
}
}
}
}
Příklad: operace
Kdy operation je nastavená hodnota query
type Query {
executeGetUserDetails(userId: Int!): GetUserDetailsResponse
}
Kdy operation je nastavená hodnota mutation
type Mutation {
executeGetUserDetails(userId: Int!): GetUserDetailsResponse
}
Povoleno (entity s názvem entity GraphQL)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.graphql |
enabled |
boolean | ❌ Ne | True |
Umožňuje vývojářům selektivně zahrnout entity do schématu GraphQL.
Format
{
"entities": {
"{entity-name}": {
"graphql": {
"enabled": <true> (default) | <false>
}
}
}
}
REST (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.rest |
enabled |
boolean | ❌ Ne | True |
entities.rest |
path |
řetězec | ❌ Ne | /{entity-name} |
entities.{entity-name}.rest |
methods |
Řetězcové pole | ❌ Ne* | POST |
* Vlastnost methods je určena pouze pro stored-procedure koncové body.
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Format
{
"entities": {
"{entity-name}": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string; default: "{entity-name}">
}
}
}
}
Popis (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
description |
řetězec | ❌ Ne | None |
Volitelný popis entity čitelný pro člověka. Tato hodnota se zobrazí v dokumentaci k vygenerovaném rozhraní API a jako komentář ve schématu GraphQL.
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 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"
}
}
}
}
Pole (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
fields |
pole | ❌ Ne | None |
Definuje metadata pro jednotlivá pole databáze, včetně aliasů, popisů a označení primárního klíče. Pole fields nahradí mappings (prostřednictvím alias vlastnosti) i source.key-fields (přes primary-key vlastnost) v jedné sjednocené struktuře.
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Vnořené vlastnosti
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.fields[] |
name |
řetězec | ✔️ Ano | None |
entities.{entity-name}.fields[] |
alias |
řetězec | ❌ Ne | None |
entities.{entity-name}.fields[] |
description |
řetězec | ❌ Ne | None |
entities.{entity-name}.fields[] |
primary-key |
boolean | ❌ Ne | 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"
}
]
}
}
}
V tomto příkladu id je určen jako primární klíč (nahrazuje potřebu source.key-fields), zatímco sku_title a sku_status jsou aliasovány jako title a status (nahrazuje potřebu mappings).
Important
Schéma vynucuje, že fields nemůže existovat současně mappings nebo source.key-fields ve stejné entitě. Migrujte na fields zastaralé vlastnosti a odeberte je.
Mapování (entity s názvem entity)
Výstraha
Vlastnost mappings je v JAZYCE DAB 2.0 zastaralá.
fields Místo toho použijte pole s alias vlastností. Schéma to vynucuje fields a mappings nemůže existovat ve stejné entitě.
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
mappings |
objekt | ❌ Ne | None |
Povolí pro pole databázových objektů vlastní aliasy nebo vystavené názvy.
Important
U entit s povoleným GraphQL musí nakonfigurovaný vystavený název splňovat požadavky na název GraphQL.
Format
{
"entities": {
"{entity-name}": {
"mappings": {
"<field-1-name>": "<field-1-alias>",
"<field-2-name>": "<field-2-alias>",
"<field-3-name>": "<field-3-alias>"
}
}
}
}
Examples
Tabulka databáze
CREATE TABLE Books
(
id INT,
sku_title VARCHAR(50),
sku_status VARCHAR(50),
)
Configuration
{
"entities": {
"Books": {
...
"mappings": {
"sku_title": "title",
"sku_status": "status"
}
}
}
}
Mezipaměť (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
cache |
objekt | ❌ Ne | None |
Povolí a nakonfiguruje ukládání do mezipaměti pro entitu.
Vnořené vlastnosti
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.cache |
enabled |
boolean | ❌ Ne | False |
entities.{entity-name}.cache |
ttl-seconds |
integer | ❌ Ne | - |
entities.{entity-name}.cache |
level |
enum (L1 | L1L2) |
❌ Ne | L1L2 |
Format
{
"entities": {
"{entity-name}": {
"cache": {
"enabled": <true> (default) | <false>,
"ttl-seconds": <integer; default: 5>,
"level": <"L1" | "L1L2"> (default: "L1L2")
}
}
}
}
Vlastnosti level řídí, které úrovně mezipaměti se používají:
| Hodnota | Description |
|---|---|
L1 |
Pouze mezipaměť v paměti. Nejrychlejší, ale nesdílený mezi instancemi. |
L1L2 |
Mezipaměť v paměti plus distribuovaná mezipaměť (Redis). Sdíleno napříč instancemi s horizontálním navýšením kapacity Výchozí. |
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Note
Pokud nezadáte, ttl-seconds zdědí globální hodnotu nastavenou v části runtime.cache.
Example
{
"entities": {
"Author": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level": "L1"
}
}
}
}
Relace (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
relationships |
objekt | ❌ Ne | None |
Konfiguruje, jak entity GraphQL souvisejí s dalšími vystavené entitami. Další informace najdete v tématu rozpis relací tvůrce rozhraní Data API.
Note
Vlastnost relationship-name pro každou relaci musí být pro každou entitu jedinečná.
Vnořené vlastnosti
Tyto vlastnosti se používají v různých kombinacích v závislosti na kardinalitě relace.
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.relationships |
cardinality |
řetězec | ✔️ Ano | None |
entities.{entity-name}.relationships |
target.entity |
řetězec | ✔️ Ano | None |
entities.{entity-name}.relationships |
target.fields |
Řetězcové pole | ❌ Ne | None |
entities.{entity-name}.relationships |
source.fields |
Řetězcové pole | ❌ Ne | None |
entities.{entity-name}.relationships |
linking.object |
řetězec | ❌ Ne | None |
entities.{entity-name}.relationships |
linking.source.fields |
Řetězcové pole | ❌ Ne | None |
entities.{entity-name}.relationships |
linking.target.fields |
Řetězcové pole | ❌ Ne | 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 |
Jedna entita kategorie může souviset s mnoha entitami úkolů. |
| many-to-one | one |
Mnoho entit úkolů může souviset s jednou entitou kategorie. |
| many-to-many | many |
Jedna entita úkolů může souviset s mnoha entitami uživatelů a jedna entita uživatele může souviset s mnoha entitami úkolů. |
Příklad: Kardinalita 1:1
Každý Profile souvisí s přesně jedním Usera každý User má přesně jeden související Profile.
{
"entities": {
"User": {
"relationships": {
"user_profile": {
"cardinality": "one",
"target.entity": "Profile",
"source.fields": [ "id" ],
"target.fields": [ "user_id" ]
}
}
},
"Profile": {
...
}
}
}
Schéma GraphQL
type User
{
id: Int!
...
profile: Profile
}
Command-line
dab update User \
--relationship profile \
--target.entity Profile \
--cardinality one \
--relationship.fields "id:user_id"
Příklad: Kardinalita 1:N
A Category může mít jednu nebo více souvisejících Book entit, zatímco každá z nich Book může mít jednu související Category.
{
"entities": {
"Book": {
...
},
"Category": {
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
Schéma GraphQL
type Category
{
id: Int!
...
books: [BookConnection]!
}
Příkazový řádek
dab update Category \
--relationship category_books \
--target.entity Book \
--cardinality many \
--relationship.fields "id:category_id"
Příklad: Kardinalita M:1
Mnoho Book entit může mít jednu související Category, zatímco Category může mít jednu nebo více souvisejících Book položek.
{
"entities": {
"Book": {
"relationships": {
"books_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
},
"Category": {
...
}
}
}
}
Schéma GraphQL
type Book
{
id: Int!
...
category: Category
}
Příkazový řádek
dab update Book \
--relationship books_category \
--target.entity "Category" \
--cardinality one \
--relationship.fields "category_id:id"
Příklad: Kardinalita M:N
Mnoho Book entit může mít mnoho souvisejících Author entit, zatímco mnoho Author entit může mít mnoho souvisejících Book položek.
Note
Tato relace je možná s třetí tabulkou, dbo.books_authorskterou označujeme jako odkazující objekt.
{
"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": {
...
}
}
}
}
Schéma GraphQL
type Book
{
id: Int!
...
authors: [AuthorConnection]!
}
type Author
{
id: Int!
...
books: [BookConnection]!
}
Příkazový řádek
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"
Stav (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
health |
objekt | ❌ Ne | None |
Povolí a nakonfiguruje kontroly stavu pro entitu.
Vnořené vlastnosti
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.health |
enabled |
boolean | ❌ Ne | true |
entities.{entity-name}.health |
first |
integer | ❌ Ne | 100 |
entities.{entity-name}.health |
threshold-ms |
integer | ❌ Ne | 1000 |
Example
{
"entities": {
"Book": {
"health": {
"enabled": true,
"first": 3,
"threshold-ms": 500
}
}
}
}
Note
Hodnota first musí být menší nebo rovna runtime.pagination.max-page-size nastavení. Menší hodnoty pomáhají rychleji provádět kontroly stavu.
Important
Uložené procedury jsou automaticky vyloučeny z kontrol stavu entit, protože vyžadují parametry a nemusí být deterministické.
MCP (entity s názvem entity)
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name} |
mcp |
objekt | ❌ Ne | povoleno ve výchozím nastavení při vynechání |
Řídí účast MCP pro entitu. Pokud je mcp povolen globálně, entity se ve výchozím nastavení účastní. Tato vlastnost slouží k odhlášení nebo povolení vlastních nástrojů MCP pro entity uložených procedur.
Note
Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.
Formát objektu
K podrobnému řízení použijte formát objektu:
| Parent | Property | Typ | Required | Default |
|---|---|---|---|---|
entities.{entity-name}.mcp |
dml-tools |
boolean | ❌ Ne | true |
entities.{entity-name}.mcp |
custom-tool |
boolean | ❌ Ne | false |
{
"entities": {
"Book": {
"mcp": {
"dml-tools": true
}
}
}
}
Vlastní nástroj (pouze uložené procedury)
U entit uložených procedur nastavte custom-tool registraci true procedury jako pojmenovaného nástroje MCP:
{
"entities": {
"GetBookById": {
"source": {
"type": "stored-procedure",
"object": "dbo.get_book_by_id"
},
"mcp": {
"custom-tool": true
},
"permissions": [
{
"role": "anonymous",
"actions": ["execute"]
}
]
}
}
}
Important
Vlastnost custom-tool je platná pouze pro entity uložené procedury. Když ji nastavíte na tabulku nebo zobrazíte entitu, dojde k chybě konfigurace.
Příklady rozhraní příkazového řádku
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