Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 |
Állapot-ellenőrzési lekérdezés maximális időtartama ezredmásodpercben (min: 1) |
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.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 |
entities.entity-name.mappings |
API-mezőnevek leképezése adatbázisoszlopok számára |
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 |
Formátum áttekintése
{
"entities": {
"{entity-name}": {
"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>,
"type": "view" | "stored-procedure" | "table",
"key-fields": [<string>], // primary keys for the view
"parameters": { // only for stored-procedure
"<parameter-name>": <default-value>,
"<parameter-name>": <default-value>
}
},
"mappings": {
"<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>
}
}
]
}
}
}
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 |
type |
enum (table, view, stored-procedure) |
✔️ Igen | None |
entities.{entity-name}.source |
key-fields |
karakterlánc-tömb | ✔️ Igen* | None |
entities.{entity-name}.source |
parameters |
objektum | ✔️ Igen** | None |
-
key-fieldscsak akkor szükséges, hatypeazview. Az érték az elsődleges kulcsokat jelöli.
**
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.
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>,
"type": <"view" | "stored-procedure" | "table">,
"key-fields": [ <string> ], // primary keys of the view
"parameters": { // only for option stored-procedure parameters
"<parameter-name-1>": <default-value>
"<parameter-name-2>": <default-value>
}
}
}
}
}
Engedélyek (entitásnév entitások)
| Parent | Property | Típus | Required | Default |
|---|---|---|---|---|
entities.permissions |
role |
karakterlánc | ✔️ Igen | None |
Egy sztring, amely megadja annak a szerepkörnek a nevét, amelyre az engedélyek vonatkoznak.
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"role": <"anonymous" | "authenticated" | "custom-role">
}
]
}
}
}
Example
Ez a példa azt a szerepkört custom-role határozza meg, amely csak read az User entitásra vonatkozó engedélyekkel rendelkezik.
{
"entities": {
"User": {
"permissions": [
{
"role": "custom-role",
"actions": ["read"]
}
]
}
}
}
Felhasználási példák
GET https://localhost:5001/api/User
Authorization: Bearer <your_access_token>
X-MS-API-ROLE: custom-role
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
- A szabályzatok támogatják az OData-operátorokat, például
eq. - A szabályzatok támogatják az összetett predikátumokat az
andandor. - Csak a következő műveletek támogatottak:
create,read,updateésdelete. (Nemexecute) - A szabályzatok szűrik az eredményeket, de nem akadályozzák meg a lekérdezések végrehajtását az adatbázisban.
- A mezőnek a mező aliasát kell használnia, ha megfeleltetve van.
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 |
❌ Nem | karakterlánc | None |
entities.{entity-name}.graphql.type |
plural |
❌ Nem | karakterlánc | N/A (a szingular érték alapértelmezett értéke) |
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 .
Format
{
"entities": {
"{entity-name}": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string; default: "{entity-name}">
}
}
}
}
Leképezések (entitásnév entitások)
| 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 | - |
Format
{
"entities": {
"{entity-name}": {
"cache": {
"enabled": <true> (default) | <false>,
"ttl-seconds": <integer; default: 5>
}
}
}
}
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
}
}
}
}
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.