Entities

Veritabanı varlıkları için yapılandırma ayarları.

Health

Property Description
entities.entity-name.health.enabled Varlık için sistem durumu denetimlerini etkinleştirir (hem REST hem de GraphQL uç noktaları)
entities.entity-name.health.first Sistem durumu denetimi sorgusunda döndürülen satır sayısı (aralık: 1-500)
entities.entity-name.health.threshold-ms Sistem durumu denetimi sorgusu için milisaniye cinsinden en uzun süre (dk: Bir)

Description

Property Description
entities.entity-name.description Varlığın insan tarafından okunabilen açıklaması

Fields

Property Description
entities.entity-name.fields[].name Veritabanı alan adı (gerekli)
entities.entity-name.fields[].alias API tarafından kullanıma sunulan ad (eşlemelerin yerini alır)
entities.entity-name.fields[].description İnsan tarafından okunabilen alan açıklaması
entities.entity-name.fields[].primary-key Alanı birincil anahtar olarak işaretler (anahtar alanlarının yerini alır)

Source

Property Description
entities.entity-name.source.type Nesne türü: table, viewveya stored-procedure
entities.entity-name.source.object Veritabanı nesnesinin adı
entities.entity-name.source.object-description Veritabanı nesnesinin okunabilir açıklaması
entities.entity-name.source.parameters Saklı yordamlar veya işlevler için parametreler
entities.entity-name.source.key-fields Görünümler için birincil anahtar alanlarının listesi (kullanım dışı)
entities.entity-name.mappings API alan adlarını veritabanı sütunlarına eşler (kullanım dışı)

REST

Property Description
entities.entity-name.rest.enabled Bu varlık için REST'i etkinleştirir
entities.entity-name.rest.path REST uç noktası için özel yol
entities.entity-name.rest.methods İzin verilen REST yöntemleri: get, post, put, patch, delete

GraphQL

Property Description
entities.entity-name.graphql.type ve ile singular ad veya nesne yazın plural
entities.entity-name.graphql.operation İşlem türü: query veya mutation
entities.entity-name.graphql.enabled Bu varlık için GraphQL'i etkinleştirir

Permissions

Property Description
entities.entity-name.permissions[].role Rol adı dizesi
entities.entity-name.permissions[].actions Bir veya daha fazla: create, read, update, delete, execute

Relationships

Property Description
entities.entity-name.relationships.relationship-name.cardinality one veya many
entities.entity-name.relationships.relationship-name.target.entity Hedef varlığın adı
entities.entity-name.relationships.relationship-name.source.fields İlişkide kullanılan bu varlıktaki alanlar
entities.entity-name.relationships.relationship-name.target.fields Hedef varlıktan alanlar
entities.entity-name.relationships.relationship-name.linking.object Çoka çok ilişkiler için kullanılan birleştirme nesnesi
entities.entity-name.relationships.relationship-name.linking.source.fields Birleştirmede kullanılan kaynak varlıktaki alanlar
entities.entity-name.relationships.relationship-name.linking.target.fields Birleştirmede kullanılan hedef varlıktaki alanlar

Cache

Property Description
entities.entity-name.cache.enabled Varlık için yanıt önbelleğe almayı etkinleştirir
entities.entity-name.cache.ttl-seconds Yaşam süresini saniyeler içinde önbelleğe alma
entities.entity-name.cache.level Önbellek düzeyi: L1 (yalnızca bellek içi) veya L1L2 (bellek içi + dağıtılmış)

MCP

Property Description
entities.entity-name.mcp Varlık için Model Bağlam Protokolü (MCP) katılımını denetleen nesne
entities.entity-name.mcp.dml-tools Varlık için veri işleme dili (DML) araçlarını etkinleştirir veya devre dışı bırakır
entities.entity-name.mcp.custom-tool Saklı yordamı adlandırılmış bir MCP aracı olarak kaydeder (yalnızca saklı yordam varlıkları)

Biçime genel bakış

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

Kaynak (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} source object ✔️ Evet None

Varlığın veritabanı kaynak ayrıntıları.

İç içe özellikler

Parent Property Type Required Default
entities.{entity-name}.source object string ✔️ Evet None
entities.{entity-name}.source object-description string ❌ Hayır None
entities.{entity-name}.source type sabit listesi (table, view, stored-procedure) ✔️ Evet None
entities.{entity-name}.source key-fields dize dizisi ❌ Hayır* None
entities.{entity-name}.source parameters dizi veya nesne ❌ No** None

* key-fieldsyalnızca is type olduğunda ve view dizi kullanılmadığında fields gereklidir. değeri birincil anahtarları temsil eder.

Uyarı

özelliği key-fields DAB 2.0'da kullanım dışıdır. Bunun yerine ile dizisini fieldsprimary-key: true kullanın. Şema bunu fields zorunlu tutar ve key-fields aynı varlıkta birlikte bulunamaz.

** parameters yalnızca varsayılan değerlere sahip parametreler için ve olduğunda typestored-procedure gereklidir. Parametresinin veri türü çıkarılır. Varsayılan olmayan parametreler atlanabilir.

object-description , temel alınan veritabanı nesnesinin isteğe bağlı olarak okunabilir bir açıklamasıdır. Bu değer MCP aracı bulma sırasında ortaya çıkar ve yapay zeka aracılarının varlığın amacını anlamasına yardımcı olur.

Tip

Nesne dbo şemasına aitse, şemanın belirtilmesi isteğe bağlıdır. Ayrıca, gerektiğinde nesne adlarının etrafındaki köşeli ayraçlar (örneğin, dbo.Users vs. [dbo].[Users]) kullanılabilir.

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

Parametreler dizisi biçimi

DAB 2.0 önizlemesinde, parameters daha zengin meta verilerle yapılandırılmış dizi biçimini destekler. Her parametre aşağıdaki özelliklere sahip bir nesnedir:

Property Type Required Description
name string ✔️ Evet Parametre adı (ön ek olmadan @ )
required boolean ❌ Hayır Parametrenin gerekli olup olmadığı (true) veya isteğe bağlı (false)
default any ❌ Hayır Parametre sağlandığında kullanılan varsayılan değer
description string ❌ Hayır Parametrenin insan tarafından okunabilir açıklaması

Örnek (dizi biçimi—tercih edilen)

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

Uyarı

için sözlük biçimi parameters (örneğin, { "id": 0 }) DAB 2.0'da kullanım dışıdır. Önceki dizi biçimini kullanın. Eski biçim geriye dönük uyumluluk için hala kabul edilir, ancak gelecek bir sürümde kaldırılacaktır.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

İzinler (varlık-adı varlıkları)

Parent Property Type Required Default
entities.permissions role string ✔️ Evet None

İzinlerin uygulanacağı rol adını belirtir. Kimlik sağlayıcınızda tanımlanan sistem rollerini (Anonymous, Authenticated) veya özel rolleri kullanın.

Tip

Rol değerlendirmesi, sistem rolleri ve üst bilgi hakkında ayrıntılı bilgi için bkz. YetkilendirmeyeX-MS-API-ROLE genel bakış.

Format

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

Example

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

Rol devralma

DAB 2.0, varlık izinleri için rol devralmayı tanıtır. Bir rol bir varlık için açıkça yapılandırılmadığında, aşağıdaki zinciri kullanarak izinleri daha geniş bir rolden devralır:

named-role → authenticated → anonymous
  • Bir varlık için yapılandırılmamışsa authenticated , öğesinden anonymousdevralır.
  • Adlandırılmış bir rol yapılandırılmamışsa, öğesinden authenticatedveya yoksa öğesinden anonymousauthenticated devralır.

Başka bir deyişle, izinleri bir kez anonymous tanımlayabilirsiniz ve daha geniş olan her rol aynı erişimi otomatik olarak alır ve yineleme gerekmez.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Example

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

Bu yapılandırmayla, anonymous, authenticatedve yapılandırılmamış adlandırılmış rollerin tümü okuyabilir Book. Devralma uygulandıktan sonra her varlığın çözümlenmiş izinlerini görmek için kullanın dab configure --show-effective-permissions .

Eylemler (dize dizisi İzinleri varlık-adı varlıkları)

Parent Property Type Required Default
entities.permissions actions oneOf [dize, dizi] ✔️ Evet None

İlişkili rol için izin verilen işlemlerin ayrıntılarını içeren bir dize dizisi.

Action SQL İşlemi
* Tüm eylemler
create Bir veya daha fazla* satır ekleme
read Bir veya daha fazla satır seçme
update Bir veya daha fazla satırı değiştirme*
delete Bir veya daha fazla* satırı silme
execute Saklı yordam çalıştırır

* Şu anda yalnızca GraphQL'de birden çok işlem desteklenmektedir.

Note

Saklı yordamlar için joker karakter (*) eylemi yalnızca execute eylemine genişletir. Tablolar ve görünümler için create, read, updateve deleteolarak genişletir.

Format

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

Example

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

Alternatif biçim (yalnızca dize, ne zaman type=stored-procedure)

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

Example

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

Eylemler (nesne dizisi İzinleri varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name}.permissions actions dize dizisi ✔️ Evet None

İlişkili rol için izin verilen işlemlerin ayrıntılarını gösteren bir nesne dizisi.

Note

Saklı yordamlar için joker karakter (*) eylemi yalnızca executegenişletir. Tablolar/görünümler için, create, read, updateve deleteolarak genişletir.

İç içe özellikler

Parent Property Type Required Default
entities.{entity-name}.permissions.actions[] action string ✔️ Evet None
entities.{entity-name}.permissions.actions[] fields object ❌ Hayır None
entities.{entity-name}.permissions.actions[] policy object ❌ Hayır None
entities.{entity-name}.permissions.actions[].policy database string ✔️ Evet None

Format

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

Example

Bu, alan ve ilke kısıtlamalarıyla varlık üzerinde read izni auditor verirUser.

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

İlke notları

Veritabanı ilkeleri, OData stili koşullarını kullanarak sorgu sonuçlarını filtreler. Varlık alanlarına başvurmak ve @item.<field> kimliği doğrulanmış kullanıcı talepleri eklemek için kullanın@claims.<type>.

Görünüş Ayrıntılar
Sözdizimi OData önkoşulları (eq, ne, and, or, gt, lt)
Alan referansı @item.<field> (varsa eşlenmiş ad kullanın)
Talep başvurusu @claims.<claimType>
Desteklenen eylemler read, update, delete
Desteklenmez create, execute

Tip

Talep değiştirme ve sorun giderme dahil olmak üzere veritabanı ilkeleriyle ilgili kapsamlı yönergeler için bkz. Veritabanı ilkelerini yapılandırma.

Tür (GraphQL varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name}.graphql type object ❌ Hayır {entity-name}

GraphQL şemasındaki bir varlık için adlandırma kuralını ayarlar.

Format

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

İç içe özellikler

Parent Property Required Type Default
entities.{entity-name}.graphql.type singular ✔️ Evet* string None
entities.{entity-name}.graphql.type plural ❌ Hayır string Yok (varsayılan olarak tekil değer kullanılır)

* singular bir nesne olarak belirtildiğinde type gereklidir. Düz bir dize olduğunda type , bu dize tekil ad olarak kullanılır.

Example

Configuration

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

GraphQL sorgusu

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

GraphQL yanıtı

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

İşlem (GraphQL varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name}.graphql operation sabit listesi dizesi ❌ Hayır mutation

İşlemin stored-procedure veya Queryaltında Mutation görünüp görünmediğini tanımlar.

Note

{entity-name}.type olarak ayarlandığındastored-procedure, otomatik olarak yeni bir GraphQL türü executeXXX oluşturulur. Bu operation özellik, bu türün GraphQL şemasına yerleştirildiği yeri denetler. İşlevsel bir etki yoktur, yalnızca şema hijyeni vardır.

Format

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

Örnek: işlem

Ne zaman operation olarak ayarlanır? query

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

Ne zaman operation olarak ayarlanır? mutation

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

Etkin (GraphQL varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name}.graphql enabled boolean ❌ Hayır True

Geliştiricilerin GraphQL şemasına varlıkları seçmeli olarak eklemesine olanak tanır.

Format

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

REST (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name}.rest enabled boolean ❌ Hayır True
entities.rest path string ❌ Hayır /{entity-name}
entities.{entity-name}.rest methods dize dizisi ❌ Hayır* POST

methods* Özelliği yalnızca uç noktalar içindirstored-procedure.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Format

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

Açıklama (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} description string ❌ Hayır None

Varlığın isteğe bağlı olarak okunabilir bir açıklaması. Bu değer oluşturulan API belgelerinde ve GraphQL şemasında açıklama olarak gösterilir.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

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

Alanlar (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} fields array ❌ Hayır None

Diğer adlar, açıklamalar ve birincil anahtar atamaları dahil olmak üzere tek tek veritabanı alanları için meta verileri tanımlar. Dizi hem fields (özelliği aracılığıylamappings) hem alias de source.key-fields (özelliği aracılığıylaprimary-key) tek bir birleşik yapıda değiştirir.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

İç içe özellikler

Parent Property Type Required Default
entities.{entity-name}.fields[] name string ✔️ Evet None
entities.{entity-name}.fields[] alias string ❌ Hayır None
entities.{entity-name}.fields[] description string ❌ Hayır None
entities.{entity-name}.fields[] primary-key boolean ❌ Hayır 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"
        }
      ]
    }
  }
}

Bu örnekte birincil id anahtar olarak belirlenmiştir (için gereksinimini source.key-fieldsdeğiştirerek) sku_title ve sku_status olarak titlestatus diğer ad verilir (gereksinimini mappingsdeğiştirir).

Important

Şema fields , aynı varlıkla mappings veya source.key-fields aynı varlıkta birlikte bulunamaz. Kullanım dışı bırakılan özelliklere fields geçiş ve kaldırma.

Eşlemeler (varlık-adı varlıkları)

Uyarı

özelliği mappings DAB 2.0'da kullanım dışıdır. fields Bunun yerine özelliğiyle dizisini alias kullanın. Şema bunu fields zorunlu tutar ve mappings aynı varlıkta birlikte bulunamaz.

Parent Property Type Required Default
entities.{entity-name} mappings object ❌ Hayır None

Veritabanı nesnesi alanları için özel diğer adları veya kullanıma sunulan adları etkinleştirir.

Important

GraphQL'in etkinleştirildiği varlıklar için, kullanıma sunulan adın GraphQL adı gereksinimlerini karşılaması gerekir.

Format

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

Examples

Veritabanı Tablosu

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

Configuration

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

Önbellek (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} cache object ❌ Hayır None

Varlık için önbelleğe almayı etkinleştirir ve yapılandırr.

İç içe özellikler

Parent Property Type Required Default
entities.{entity-name}.cache enabled boolean ❌ Hayır False
entities.{entity-name}.cache ttl-seconds integer ❌ Hayır -
entities.{entity-name}.cache level sabit listesi (L1 | L1L2) ❌ Hayır L1L2

Format

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

level özelliği hangi önbellek katmanlarının kullanıldığını denetler:

Değer Description
L1 Yalnızca bellek içi önbellek. En hızlı, ancak örnekler arasında paylaşılmaz.
L1L2 Bellek içi önbellek artı dağıtılmış (Redis) önbellek. Ölçeği genişletilmiş örnekler arasında paylaşılır. Varsayılan.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Note

Belirtilmediğinde altında ttl-seconds ayarlanan runtime.cachegenel değeri devralır.

Example

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

İlişkiler (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} relationships object ❌ Hayır None

GraphQL varlıklarının diğer kullanıma sunulan varlıklarla nasıl ilişkili olduğunu yapılandırır. Daha fazla bilgi için bkz. Veri API'si oluşturucu ilişkileri dökümü.

Note

relationship-name Her ilişkinin özelliği, bu varlığa ait tüm ilişkilerde benzersiz olmalıdır.

İç içe özellikler

Bu özellikler, ilişki kardinalitesine bağlı olarak farklı birleşimlerde kullanılır.

Parent Property Type Required Default
entities.{entity-name}.relationships cardinality string ✔️ Evet None
entities.{entity-name}.relationships target.entity string ✔️ Evet None
entities.{entity-name}.relationships target.fields dize dizisi ❌ Hayır None
entities.{entity-name}.relationships source.fields dize dizisi ❌ Hayır None
entities.{entity-name}.relationships linking.object string ❌ Hayır None
entities.{entity-name}.relationships linking.source.fields dize dizisi ❌ Hayır None
entities.{entity-name}.relationships linking.target.fields dize dizisi ❌ Hayır 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 Bir kategori varlığı birçok yapılacaklar varlığıyla ilişkilendirilebilir
many-to-one one Birçok yapılacaklar varlığı bir kategori varlığıyla ilişkilendirilebilir
many-to-many many Bir yapılacaklar varlığı birçok kullanıcı varlığıyla ve bir kullanıcı varlığı da birçok yapılacaklar varlığıyla ilişkilendirilebilir

Örnek: Bire bir kardinalite

Her Profile biri tam olarak bir Userile ilişkilidir ve her User birinin tam olarak bir ilişkili Profilevardır.

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

GraphQL şeması

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

Command-line

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

Örnek: Bire çok kardinalitesi

A Category ile ilgili bir veya daha fazla varlık Book olabilirken, her Book birinin ilgili Categorybir varlığı olabilir.

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

GraphQL şeması

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

Komut satırı

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

Örnek: Çoka bir kardinalitesi

Birçok Book varlığın ilgili Categorybir öğesi olabilirken, bir Category varlığın bir veya daha fazla ilişkili Book girdisi olabilir.

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

GraphQL şeması

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

Komut satırı

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

Örnek: Çoka çok kardinalitesi

Birçok Book varlığın birçok ilişkili Author varlığı olabilirken, birçok Author varlığın birçok ilgili Book girdisi olabilir.

Note

Bu ilişki, dbo.books_authorsbağlama nesnesi olarak adlandırdığımız üçüncü bir tabloyla mümkündür.

{
  "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 şeması

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

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

Komut satırı

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"

Sistem durumu (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} health object ❌ Hayır None

Varlık için sistem durumu denetimlerini etkinleştirir ve yapılandırr.

İç içe özellikler

Parent Property Type Required Default
entities.{entity-name}.health enabled boolean ❌ Hayır true
entities.{entity-name}.health first integer ❌ Hayır 100
entities.{entity-name}.health threshold-ms integer ❌ Hayır 1000

Example

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

Note

Değer first , ayardan küçük veya buna eşit runtime.pagination.max-page-size olmalıdır. Daha küçük değerler, sistem durumu denetimlerinin daha hızlı tamamlanmasına yardımcı olur.

Important

Saklı yordamlar, parametre gerektirdiğinden ve belirlenimci olmayabileceği için varlık durumu denetimlerinin dışında tutulur.

MCP (varlık-adı varlıkları)

Parent Property Type Required Default
entities.{entity-name} mcp object ❌ Hayır atlandığında varsayılan olarak etkin

Varlık için MCP katılımını denetler. MCP genel olarak etkinleştirildiğinde varlıklar varsayılan olarak katılır. Saklı yordam varlıkları için özel MCP araçlarını devre dışı bırakma veya etkinleştirme için bu özelliği kullanın.

Note

Bu bölümde açıklanan Veri API oluşturucusu 2.0 işlevselliği şu anda önizleme aşamasındadır ve genel kullanılabilirlik öncesinde değişebilir. Daha fazla bilgi için bkz. Sürüm 2.0'daki yenilikler.

Nesne biçimi

Ayrıntılı denetim için nesne biçimini kullanın:

Parent Property Type Required Default
entities.{entity-name}.mcp dml-tools boolean ❌ Hayır true
entities.{entity-name}.mcp custom-tool boolean ❌ Hayır false
{
  "entities": {
    "Book": {
      "mcp": {
        "dml-tools": true
      }
    }
  }
}

Özel araç (yalnızca saklı yordamlar)

Saklı yordam varlıkları için, yordamı adlandırılmış bir MCP aracı olarak kaydedecek şekilde ayarlayın custom-tooltrue :

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

Important

custom-tool özelliği yalnızca saklı yordam varlıkları için geçerlidir. Bunu bir tabloda ayarlamak veya varlığı görüntülemek yapılandırma hatasıyla sonuçlanır.

CLI örnekleri

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