Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 (min: 1) |
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.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 |
entities.entity-name.mappings |
API alan adlarını veritabanı sütunlarıyla eşleme |
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 |
Biçime genel bakış
{
"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>
}
}
]
}
}
}
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 |
type |
sabit listesi (table, view, stored-procedure) |
✔️ Evet | None |
entities.{entity-name}.source |
key-fields |
dize dizisi | ✔️ Evet* | None |
entities.{entity-name}.source |
parameters |
object | ✔️ Evet** | None |
-
key-fieldsyalnızca olduğundatypeviewgereklidir. değeri birincil anahtarları temsil eder.
**
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.
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>,
"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>
}
}
}
}
}
İzinler (varlık-adı varlıkları)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
entities.permissions |
role |
string | ✔️ Evet | None |
İzinlerin uygulandığı rolün adını belirten dize.
Format
{
"entities": {
"{entity-name}": {
"permissions": [
{
"role": <"anonymous" | "authenticated" | "custom-role">
}
]
}
}
}
Example
Bu örnek, rolü custom-role yalnızca read varlık üzerinde User izinlere sahip olarak tanımlar.
{
"entities": {
"User": {
"permissions": [
{
"role": "custom-role",
"actions": ["read"]
}
]
}
}
}
Kullanım örnekleri
GET https://localhost:5001/api/User
Authorization: Bearer <your_access_token>
X-MS-API-ROLE: custom-role
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ı
- İlkeler gibi
eqOData işleçlerini destekler. - İlkeler ve
andkullanarakorbileşik koşullarını destekler. - Yalnızca eylemler için desteklenir:
create,read,updatevedelete. (Değilexecute) - İlkeler sonuçları filtreler ancak veritabanında sorgu yürütmeyi engellemez.
- Alan, eşlenmişse alan diğer adını kullanmalıdır.
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 |
❌ Hayır | string | None |
entities.{entity-name}.graphql.type |
plural |
❌ Hayır | string | Yok (varsayılan olarak tekil değer 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.
Format
{
"entities": {
"{entity-name}": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string; default: "{entity-name}">
}
}
}
}
Eşlemeler (varlık-adı varlıkları)
| 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 | - |
Format
{
"entities": {
"{entity-name}": {
"cache": {
"enabled": <true> (default) | <false>,
"ttl-seconds": <integer; default: 5>
}
}
}
}
Note
Belirtilmediğinde altında ttl-seconds ayarlanan runtime.cachegenel değeri devralır.
Example
{
"entities": {
"Author": {
"cache": {
"enabled": true,
"ttl-seconds": 30
}
}
}
}
İ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 belirleyici olmayabileceği için varlık durumu denetimlerinin dışında tutulur.