Entities

Adatbázis-entitások konfigurációs beállításai.

Health

Property Description
entities.entity-name.health.enabled Engedélyezi az entitás állapot-ellenőrzését (REST- és GraphQL-végpontok egyaránt)
entities.entity-name.health.first Az állapot-ellenőrző lekérdezésben visszaadott sorok száma (tartomány: 1–500)
entities.entity-name.health.threshold-ms Az állapot-ellenőrzési lekérdezés maximális időtartama ezredmásodpercben (min: Egy)

Description

Property Description
entities.entity-name.description Az entitás ember által olvasható leírása

Fields

Property Description
entities.entity-name.fields[].name Adatbázismező neve (kötelező)
entities.entity-name.fields[].alias API által közzétett név (a leképezések helyett)
entities.entity-name.fields[].description Ember által olvasható mező leírása
entities.entity-name.fields[].primary-key Mező megjelölése elsődleges kulcsként (kulcsmezők helyett)

Source

Property Description
entities.entity-name.source.type Objektumtípus: table, viewvagy stored-procedure
entities.entity-name.source.object Az adatbázis-objektum neve
entities.entity-name.source.object-description Az adatbázis-objektum olvasható leírása
entities.entity-name.source.parameters Tárolt eljárások vagy függvények paraméterei
entities.entity-name.source.key-fields A nézetek elsődleges kulcsmezőinek listája (elavult)
entities.entity-name.mappings API-mezőnevek leképezése adatbázisoszlopok számára (elavult)

REST

Property Description
entities.entity-name.rest.enabled REST engedélyezése ehhez az entitáshoz
entities.entity-name.rest.path Egyéni útvonal REST-végponthoz
entities.entity-name.rest.methods Engedélyezett REST-metódusok: get, post, put, patchdelete

GraphQL

Property Description
entities.entity-name.graphql.type Írja be a nevet vagy objektumot a singularplural
entities.entity-name.graphql.operation Művelet típusa: query vagy mutation
entities.entity-name.graphql.enabled Engedélyezi a GraphQL-t ehhez az entitáshoz

Permissions

Property Description
entities.entity-name.permissions[].role Szerepkörnév sztringje
entities.entity-name.permissions[].actions Egy vagy több: create, read, update, deleteexecute

Relationships

Property Description
entities.entity-name.relationships.relationship-name.cardinality one vagy many
entities.entity-name.relationships.relationship-name.target.entity A cél entitás neve
entities.entity-name.relationships.relationship-name.source.fields A kapcsolatban használt entitás mezői
entities.entity-name.relationships.relationship-name.target.fields Mezők a cél entitásból
entities.entity-name.relationships.relationship-name.linking.object Több-a-többhöz kapcsolatokhoz használt összekapcsolás objektum
entities.entity-name.relationships.relationship-name.linking.source.fields Az illesztés során használt forrásentitások mezői
entities.entity-name.relationships.relationship-name.linking.target.fields Az illesztésben használt célentitások mezői

Cache

Property Description
entities.entity-name.cache.enabled Az entitás válasz gyorsítótárazásának engedélyezése
entities.entity-name.cache.ttl-seconds Gyorsítótár élettartam másodpercben
entities.entity-name.cache.level Gyorsítótár szintje: L1 (csak memóriában) vagy L1L2 (memóriában + elosztott)

MCP

Property Description
entities.entity-name.mcp Az entitáshoz tartozó Model Context Protocol (MCP) részvételét vezérlő objektum
entities.entity-name.mcp.dml-tools Engedélyezi vagy letiltja az entitás adatmanipulációs nyelvi (DML) eszközeit
entities.entity-name.mcp.custom-tool A tárolt eljárást névvel ellátott MCP-eszközként regisztrálja (csak tárolt eljárás entitások)

Formátum áttekintése

{
  "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
      }
    }
  }
}

Forrás (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} source objektum ✔️ Igen None

Az entitás adatbázis-forrásadatai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
entities.{entity-name}.source object karakterlánc ✔️ Igen None
entities.{entity-name}.source object-description karakterlánc ❌ Nem None
entities.{entity-name}.source type enum (table, view, stored-procedure) ✔️ Igen None
entities.{entity-name}.source key-fields karakterlánc-tömb ❌ Nem* None
entities.{entity-name}.source parameters tömb vagy objektum ❌ Nem** None

* key-fields csak akkor szükséges, ha type van, view és a fields tömb nincs használatban. Az érték az elsődleges kulcsokat jelöli.

Figyelmeztetés

A key-fields tulajdonság elavult a DAB 2.0-ban. Használja helyette a fields tömböt primary-key: true . A séma kikényszeríti ezt, fields és key-fields nem lehet egyidejűleg létezni ugyanazon az entitáson.

** parameters csak akkor szükséges, ha type van stored-procedure és csak az alapértelmezett értékeket tartalmazó paraméterek esetében. A paraméter adattípusa kikövetkezésre kerül. Az alapértelmezett paraméterek kihagyhatók.

object-description a mögöttes adatbázis-objektum nem kötelező, emberi olvasásra alkalmas leírása. Ez az érték az MCP-eszközök felderítése során jelenik meg, segítve az AI-ügynököket az entitás céljának megértésében.

Tip

Ha az objektum a dbo sémához tartozik, a séma megadása nem kötelező. Emellett szükség esetén az objektumnevek körüli szögletes zárójelek (például dbo.Users vs. [dbo].[Users]) is használhatók.

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>"
          }
        ]
      }
    }
  }
}

Paraméterek tömbformátuma

A DAB 2.0-s és újabb verzióiban parameters gazdagabb metaadatokkal rendelkező strukturált tömbformátumot támogat. Minden paraméter egy objektum, amely a következő tulajdonságokkal rendelkezik:

Property Típus Required Description
name karakterlánc ✔️ Igen Paraméter neve (az @ előtag nélkül)
required boolean ❌ Nem Szükség van-e a paraméterre (true) vagy nem kötelező (false)
default any ❌ Nem Alapértelmezett érték, amely akkor használatos, ha a paraméter nincs megadva
description karakterlánc ❌ Nem A paraméter ember által olvasható leírása

Példa (tömbformátum – előnyben részesített)

{
  "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"
          }
        ]
      }
    }
  }
}

Figyelmeztetés

A szótár formátuma parameters (például { "id": 0 }) elavult a DAB 2.0-ban. Használja az előző tömbformátumot. A régi formátum továbbra is használható a visszamenőleges kompatibilitás érdekében, de egy későbbi kiadásban el lesz távolítva.

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

Engedélyek (entitásnév entitások)

Parent Property Típus Required Default
entities.permissions role karakterlánc ✔️ Igen None

Megadja a szerepkör nevét, amelyre az engedélyek vonatkoznak. Használja az identitásszolgáltatóban definiált rendszerszerepköröket (Anonymous, Authenticated) vagy egyéni szerepköröket.

Tip

A szerepkör-kiértékelésről, a rendszerszerepkörökről és a fejlécről további információt az X-MS-API-ROLEEngedélyezés áttekintése című témakörben talál.

Format

{
  "entities": {
    "{entity-name}": {
      "permissions": [
        {
          "role": <"Anonymous" | "Authenticated" | "custom-role">,
          "actions": [ <string> ]
        }
      ]
    }
  }
}

Example

{
  "entities": {
    "User": {
      "permissions": [
        {
          "role": "reader",
          "actions": ["read"]
        }
      ]
    }
  }
}

Szerepköröröklés

A DAB 2.0 szerepköröröklést vezet be az entitásengedélyekhez. Ha egy szerepkör nincs explicit módon konfigurálva egy entitáshoz, az engedélyeket egy szélesebb szerepkörtől örökli az alábbi lánc használatával:

named-role → authenticated → anonymous
  • Ha authenticated nincs konfigurálva egy entitáshoz, attól öröklődik anonymous.
  • Ha egy elnevezett szerepkör nincs konfigurálva, akkor az örökli authenticateda ( vagy ha anonymous szintén hiányzik) szerepkörtauthenticated.

Ez azt jelenti, hogy egyszer megadhatja az engedélyeket, anonymous és minden szélesebb szerepkör automatikusan megkapja ugyanazt a hozzáférést, és nincs szükség duplikálásra.

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

Example

{
  "entities": {
    "Book": {
      "source": "dbo.books",
      "permissions": [
        { "role": "anonymous", "actions": [ "read" ] }
      ]
    }
  }
}

Ezzel a konfigurációval, anonymousauthenticatedés minden nem konfigurált névvel ellátott szerepkör is elolvashatóBook. A dab configure --show-effective-permissions feloldott engedélyek megtekintése minden entitáshoz az öröklés alkalmazása után.

Műveletek (string-array Permissions entity-name entitások)

Parent Property Típus Required Default
entities.permissions actions oneOf [sztring, tömb] ✔️ Igen None

Egy sztringtömb, amely részletezi, hogy milyen műveletek engedélyezettek a társított szerepkörhöz.

Action SQL-művelet
* Minden művelet
create Egy vagy több* sor beszúrása
read Egy vagy több sor kijelölése
update Egy vagy több* sor módosítása
delete Egy vagy több* sor törlése
execute Tárolt eljárás futtatása

* Jelenleg több művelet is csak a GraphQL-ben támogatott.

Note

Tárolt eljárások esetén a helyettesítő karakter (*) művelet csak a execute műveletre terjed ki. Táblák és nézetek esetén a create, read, updateés delete.

Format

{
  "entities": {
    "{entity-name}": {
      "permissions": [
        {
          "actions": [ <string> ]
        }
      ]
    }
  }
}

Example

{
  "entities": {
    "{entity-name}": {
      "permissions": [
        {
          "actions": [ "*" ] // equivalent to create, read, update, delete
        }
      ]
    }
  }
}

Alternatív formátum (csak sztring, ha type=stored-procedure)

{
  "entities": {
    "{entity-name}": {
      "permissions": [
        {
          "actions": <string>
        }
      ]
    }
  }
}

Example

{
  "entities": {
    "{entity-name}": {
      "permissions": [
        {
          "actions": "*" // equivalent to execute
        }
      ]
    }
  }
}

Műveletek (object-array Permissions entity-name entitások)

Parent Property Típus Required Default
entities.{entity-name}.permissions actions karakterlánc-tömb ✔️ Igen None

Egy objektumtömb, amely részletezi, hogy milyen műveletek engedélyezettek a társított szerepkörhöz.

Note

Tárolt eljárások esetén a helyettesítő karakter (*) művelet csak execute. Táblák/nézetek esetén a create, read, updateés delete.

Beágyazott tulajdonságok

Parent Property Típus Required Default
entities.{entity-name}.permissions.actions[] action karakterlánc ✔️ Igen None
entities.{entity-name}.permissions.actions[] fields objektum ❌ Nem None
entities.{entity-name}.permissions.actions[] policy objektum ❌ Nem None
entities.{entity-name}.permissions.actions[].policy database karakterlánc ✔️ Igen None

Format

{
  "entities": {
    "{entity-name}": {
      "permissions": [
        {
          "role": <string>,
          "actions": [
            {
              "action": <string>,
              "fields": <array of strings>,
              "policy": <object>
            }
          ]
        }
      ]
    }
  }

Example

Ez engedélyt ad read az auditor entitásra User mező- és szabályzatkorlátozásokkal.

{
  "entities": {
    "User": {
      "permissions": [
        {
          "role": "auditor",
          "actions": [
            {
              "action": "read",
              "fields": {
                "include": ["*"],
                "exclude": ["last_login"]
              },
              "policy": {
                "database": "@item.IsAdmin eq false"
              }
            }
          ]
        }
      ]
    }
  }
}

Szabályzati megjegyzések

Az adatbázis-szabályzatok OData-stílusú predikátumokkal szűrik a lekérdezési eredményeket. Entitásmezők hivatkozására és @item.<field> hitelesített felhasználói jogcímek injektálására használható@claims.<type>.

Jellemző Részletek
Szemantika OData-predikátumok (eq, ne, and, or, gt) lt
Mezőhivatkozás @item.<field> (ha van, használja a megfeleltetett nevet)
Jogcímhivatkozás @claims.<claimType>
Támogatott műveletek \, \, \
Nem támogatott create, execute

Tip

Az adatbázis-szabályzatokkal kapcsolatos átfogó útmutatásért, beleértve a jogcímek helyettesítését és hibaelhárítását, tekintse meg az adatbázis-szabályzatok konfigurálását ismertető témakört.

Típus (GraphQL entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name}.graphql type objektum ❌ Nem {entity-name}

Beállítja egy entitás elnevezési konvencióját a GraphQL-sémán belül.

Format

{
  "entities": {
    "{entity-name}": {
      "graphql": {
        "type": {
          "singular": "<string>",
          "plural": "<string>"
        }
      }
    }
  }
}

Beágyazott tulajdonságok

Parent Property Required Típus Default
entities.{entity-name}.graphql.type singular ✔️ Igen* karakterlánc None
entities.{entity-name}.graphql.type plural ❌ Nem karakterlánc N/A (a szingular érték alapértelmezett értéke)

* singular objektumként való megadása kötelező type . Ha type egyszerű sztringről van szó, akkor a rendszer ezt a sztringet használja egyedi névként.

Example

Configuration

{
  "entities": {
    "User": {
      "graphql": {
        "type": {
          "singular": "User",
          "plural": "Users"
        }
      }
    }
  }
}

GraphQL-lekérdezés

{
  Users {
    items {
      id
      name
      age
      isAdmin
    }
  }
}

GraphQL-válasz

{
  "data": {
    "Users": {
      "items": [
        {
          "id": 1,
          "name": "Alice",
          "age": 30,
          "isAdmin": true
        },
        {
          "id": 2,
          "name": "Bob",
          "age": 25,
          "isAdmin": false
        }
        // ...
      ]
    }
  }
}

Művelet (GraphQL entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name}.graphql operation enum sztring ❌ Nem mutation

Azt határozza meg, hogy a stored-procedure művelet megjelenik-e a vagy Querya Mutation .

Note

Ha {entity-name}.type be van állítva stored-procedure, a rendszer automatikusan létrehoz egy új GraphQL-típust executeXXX . Ez a operation tulajdonság szabályozza, hogy a típus hol található a GraphQL-sémában. Nincs funkcionális hatás, csak sémahigiénia.

Format

{
  "entities": {
    "{entity-name}": {
      "graphql": {
        "operation": "query" | "mutation"
      }
    }
  }
}

Példa: művelet

Mikor operation van beállítva query

type Query {
  executeGetUserDetails(userId: Int!): GetUserDetailsResponse
}

Mikor operation van beállítva mutation

type Mutation {
  executeGetUserDetails(userId: Int!): GetUserDetailsResponse
}

Engedélyezve (GraphQL-entitásnév-entitások)

Parent Property Típus Required Default
entities.{entity-name}.graphql enabled boolean ❌ Nem True

Lehetővé teszi, hogy a fejlesztők szelektíven belefoglalják az entitásokat a GraphQL-sémába.

Format

{
  "entities": {
    "{entity-name}": {
      "graphql": {
        "enabled": <true> (default) | <false>
      }
    }
  }
}

REST (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name}.rest enabled boolean ❌ Nem True
entities.rest path karakterlánc ❌ Nem /{entity-name}
entities.{entity-name}.rest methods karakterlánc-tömb ❌ Nem* POST

* A methods tulajdonság csak végpontokra vonatkozik stored-procedure .

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

Format

{
  "entities": {
    "{entity-name}": {
      "rest": {
        "enabled": <true> (default) | <false>,
        "path": <string; default: "{entity-name}">
      }
    }
  }
}

Leírás (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} description karakterlánc ❌ Nem None

Az entitás opcionálisan olvasható leírása. Ez az érték a létrehozott API-dokumentációban és a GraphQL-séma megjegyzéseként jelenik meg.

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

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"
      }
    }
  }
}

Mezők (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} fields tömb ❌ Nem None

Az egyes adatbázismezők metaadatait határozza meg, beleértve az aliasokat, a leírásokat és az elsődleges kulcsok megjelölését. A fields tömb (a tulajdonságon keresztül) és mappings (a aliassource.key-fields tulajdonságon keresztül) is primary-key egy egységes szerkezetben cseréli le a tömböt.

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
entities.{entity-name}.fields[] name karakterlánc ✔️ Igen None
entities.{entity-name}.fields[] alias karakterlánc ❌ Nem None
entities.{entity-name}.fields[] description karakterlánc ❌ Nem None
entities.{entity-name}.fields[] primary-key boolean ❌ Nem 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"
        }
      ]
    }
  }
}

Ebben a példában id a rendszer elsődleges kulcsként van kijelölve (a szükségletet source.key-fieldslecserélve), míg sku_titlesku_status a rendszer aliasként title és status (az igény mappingshelyére) van állítva.

Important

A séma kikényszeríti, hogy fields ne létezhet együtt egy entitással mappings vagy source.key-fields ugyanazon az entitáson. Az elavult tulajdonságok migrálása fields és eltávolítása.

Leképezések (entitásnév entitások)

Figyelmeztetés

A mappings tulajdonság elavult a DAB 2.0-ban. Használja inkább a fields tömböt a alias tulajdonsággal. A séma kikényszeríti ezt, fields és mappings nem lehet egyidejűleg létezni ugyanazon az entitáson.

Parent Property Típus Required Default
entities.{entity-name} mappings objektum ❌ Nem None

Egyéni aliasok vagy közzétett nevek engedélyezése adatbázis-objektummezőkhöz.

Important

A GraphQL-t engedélyező entitások esetében a konfigurált közzétett névnek meg kell felelnie a GraphQL-névkövetelményeknek.

Format

{
  "entities": {
    "{entity-name}": {
      "mappings": {
        "<field-1-name>": "<field-1-alias>",
        "<field-2-name>": "<field-2-alias>",
        "<field-3-name>": "<field-3-alias>"
      }
    }
  }
}

Examples

Adatbázistábla

CREATE TABLE Books
(
  id INT,
  sku_title VARCHAR(50),
  sku_status VARCHAR(50),
)

Configuration

{
  "entities": {
    "Books": {
      ...
      "mappings": {
        "sku_title": "title",
        "sku_status": "status"
      }
    }
  }
}

Gyorsítótár (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} cache objektum ❌ Nem None

Engedélyezi és konfigurálja az entitás gyorsítótárazását.

Beágyazott tulajdonságok

Parent Property Típus Required Default
entities.{entity-name}.cache enabled boolean ❌ Nem False
entities.{entity-name}.cache ttl-seconds egész szám ❌ Nem -
entities.{entity-name}.cache level enum (L1 | L1L2) ❌ Nem L1L2

Format

{
  "entities": {
    "{entity-name}": {
      "cache": {
        "enabled": <true> (default) | <false>,
        "ttl-seconds": <integer; default: 5>,
        "level": <"L1" | "L1L2"> (default: "L1L2")
      }
    }
  }
}

A level tulajdonság szabályozza, hogy mely gyorsítótárszinteket használja a rendszer:

Érték Description
L1 Csak a memóriabeli gyorsítótárban. Leggyorsabb, de nem osztják meg a példányok között.
L1L2 Memóriabeli gyorsítótár és elosztott (Redis) gyorsítótár. Felskálázott példányok között megosztva. Default.

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

Note

Ha nincs megadva, ttl-seconds örökli a megadott globális értéket runtime.cache.

Example

{
  "entities": {
    "Author": {
      "cache": {
        "enabled": true,
        "ttl-seconds": 30,
        "level": "L1"
      }
    }
  }
}

Kapcsolatok (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} relationships objektum ❌ Nem None

Konfigurálja, hogy a GraphQL-entitások hogyan kapcsolódnak más közzétett entitásokhoz. További információ: Data API Builder-kapcsolatok részletezése.

Note

Az relationship-name egyes kapcsolatok tulajdonságának egyedinek kell lennie az adott entitás összes kapcsolatában.

Beágyazott tulajdonságok

Ezeket a tulajdonságokat a kapcsolat számosságától függően különböző kombinációkban használják.

Parent Property Típus Required Default
entities.{entity-name}.relationships cardinality karakterlánc ✔️ Igen None
entities.{entity-name}.relationships target.entity karakterlánc ✔️ Igen None
entities.{entity-name}.relationships target.fields karakterlánc-tömb ❌ Nem None
entities.{entity-name}.relationships source.fields karakterlánc-tömb ❌ Nem None
entities.{entity-name}.relationships linking.object karakterlánc ❌ Nem None
entities.{entity-name}.relationships linking.source.fields karakterlánc-tömb ❌ Nem None
entities.{entity-name}.relationships linking.target.fields karakterlánc-tömb ❌ Nem 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 Egy kategória-entitás számos teendő entitáshoz kapcsolódhat
many-to-one one Számos teendő entitás kapcsolódhat egy kategória-entitáshoz
many-to-many many Egy teendő entitás számos felhasználói entitáshoz kapcsolódhat, egy felhasználói entitás pedig számos todo entitáshoz kapcsolódhat

Példa: Egy az egyhez számosság

Mindegyik Profile pontosan egyhez Userkapcsolódik , és mindegyiknek User pontosan egy kapcsolódója Profilevan .

{
  "entities": {
    "User": {
      "relationships": {
        "user_profile": {
          "cardinality": "one",
          "target.entity": "Profile",
          "source.fields": [ "id" ],
          "target.fields": [ "user_id" ]
        }
      }
    },
    "Profile": {
      ...
    }
  }
}

GraphQL-séma

type User
{
  id: Int!
  ...
  profile: Profile
}

Command-line

dab update User \
  --relationship profile \
  --target.entity Profile \
  --cardinality one \
  --relationship.fields "id:user_id"

Példa: Egy-a-többhöz számosság

A egy Category vagy több kapcsolódó Book entitással rendelkezhet, míg mindegyikhez Book tartozhat egy kapcsolódó Categoryentitás.

{
  "entities": {
    "Book": {
      ...
    },
    "Category": {
      "relationships": {
        "category_books": {
          "cardinality": "many",
          "target.entity": "Book",
          "source.fields": [ "id" ],
          "target.fields": [ "category_id" ]
        }
      }
    }
  }
}

GraphQL-séma

type Category
{
  id: Int!
  ...
  books: [BookConnection]!
}

Parancssor

dab update Category \
  --relationship category_books \
  --target.entity Book \
  --cardinality many \
  --relationship.fields "id:category_id"

Példa: Több az egyhez számosság

Sok Book entitás rendelkezhet egy kapcsolódóval Category, míg egy Category vagy több kapcsolódó Book bejegyzéssel.

{
  "entities": {
    "Book": {
      "relationships": {
        "books_category": {
          "cardinality": "one",
          "target.entity": "Category",
          "source.fields": [ "category_id" ],
          "target.fields": [ "id" ]
        }
      },
      "Category": {
        ...
      }
    }
  }
}

GraphQL-séma

type Book
{
  id: Int!
  ...
  category: Category
}

Parancssor

dab update Book \
  --relationship books_category \
  --target.entity "Category" \
  --cardinality one \
  --relationship.fields "category_id:id"

Példa: Több-a-többhöz számosság

Sok Book entitás számos kapcsolódó entitással Author rendelkezhet, míg számos Author entitáshoz számos kapcsolódó Book bejegyzés tartozhat.

Note

Ez a kapcsolat egy harmadik táblával lehetséges, dbo.books_authorsamelyre hivatkozunk csatolási objektumként.

{
  "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-séma

type Book
{
  id: Int!
  ...
  authors: [AuthorConnection]!
}

type Author
{
  id: Int!
  ...
  books: [BookConnection]!
}

Parancssor

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"

Állapot (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} health objektum ❌ Nem None

Engedélyezi és konfigurálja az entitás állapot-ellenőrzését.

Beágyazott tulajdonságok

Parent Property Típus Required Default
entities.{entity-name}.health enabled boolean ❌ Nem true
entities.{entity-name}.health first egész szám ❌ Nem 100
entities.{entity-name}.health threshold-ms egész szám ❌ Nem 1000

Example

{
  "entities": {
    "Book": {
      "health": {
        "enabled": true,
        "first": 3,
        "threshold-ms": 500
      }
    }
  }
}

Note

Az first értéknek kisebbnek vagy egyenlőnek kell lennie a runtime.pagination.max-page-size beállításnál. A kisebb értékek segítenek az állapot-ellenőrzések gyorsabb elvégzésében.

Important

A tárolt eljárások automatikusan ki vannak zárva az entitásállapot-ellenőrzésekből, mert paramétereket igényelnek, és nem feltétlenül determinisztikusak.

MCP (entitásnév entitások)

Parent Property Típus Required Default
entities.{entity-name} mcp objektum ❌ Nem alapértelmezés szerint engedélyezve, ha nincs megadva

Szabályozza az mcp-részvételt az entitás számára. Ha az MCP globálisan engedélyezve van, az entitások alapértelmezés szerint részt vesznek a programban. Ezzel a tulajdonságbal letilthatja vagy engedélyezheti az egyéni MCP-eszközöket a tárolt eljárás entitásai számára.

Note

Az ebben a szakaszban ismertetett Data API builder funkció a 2.0-s és újabb verziókban érhető el. További információ: A 2.0-s verzió újdonságai.

Objektumformátum

Az objektumformátum használata részletes vezérléshez:

Parent Property Típus Required Default
entities.{entity-name}.mcp dml-tools boolean ❌ Nem true
entities.{entity-name}.mcp custom-tool boolean ❌ Nem false
{
  "entities": {
    "Book": {
      "mcp": {
        "dml-tools": true
      }
    }
  }
}

Egyéni eszköz (csak tárolt eljárások)

Tárolt eljárás entitások esetében állítsa be custom-tool az eljárást nevesített MCP-eszközként való regisztrálásra true :

{
  "entities": {
    "GetBookById": {
      "source": {
        "type": "stored-procedure",
        "object": "dbo.get_book_by_id"
      },
      "mcp": {
        "custom-tool": true
      },
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["execute"]
        }
      ]
    }
  }
}

Important

A custom-tool tulajdonság csak tárolt eljárás entitásokra érvényes. Ha egy táblára vagy egy entitásra állítja be, konfigurációs hiba történik.

CLI-példák

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