إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
Update an existing entity definition in the Data API builder configuration file. Use this command to adjust source metadata, permissions, exposure (REST/GraphQL), policies, caching, relationships, mappings, and descriptive metadata after the entity has already been added.
Tip
Use dab add to create new entities, and dab update to evolve them. Field name remapping (--map) is only available in update, not in add.
Syntax
dab update <entity-name> [options]
Quick glance
| Option | Summary |
|---|---|
<entity-name> |
Required positional argument. Logical entity name. |
-s, --source |
Name of the source table, view, or stored procedure. |
--permissions |
Role and actions in role:actions format. |
--description |
Replace entity description. |
-c, --config |
Path to config file. Default resolution applies if omitted. |
--help |
Display the help screen. |
--version |
Display version information. |
Cache
| Option | Summary |
|---|---|
--cache.enabled |
Enable or disable entity caching. |
--cache.ttl |
Cache time-to-live in seconds. |
Fields
| Option | Summary |
|---|---|
--fields.exclude |
Comma-separated list of excluded fields. |
--fields.include |
Comma-separated list of included fields (* = all). |
-m, --map |
Field mapping pairs name:alias. Replaces entire set. |
Fields metadata
| Option | Summary |
|---|---|
--fields.name |
Name of the database column to describe. |
--fields.alias |
Alias for the field. |
--fields.description |
Description for the field. |
--fields.primary-key |
Set this field as a primary key. |
GraphQL
| Option | Summary |
|---|---|
--graphql |
GraphQL exposure: false, true, singular, or singular:plural. |
--graphql.operation |
Stored procedures only: query or mutation (default mutation). |
Permissions & Policies
| Option | Summary |
|---|---|
--permissions |
role:actions for a single role. Run multiple times for multiple roles. |
--policy-database |
OData-style filter injected in DB query. |
--policy-request |
Pre-database request filter. |
Relationships
| Option | Summary |
|---|---|
--relationship |
Relationship name. Use with relationship options. |
--cardinality |
Relationship cardinality: one or many. |
--target.entity |
Target entity name. |
--linking.object |
Linking object for many-to-many. |
--linking.source.fields |
Linking object fields pointing to source. |
--linking.target.fields |
Linking object fields pointing to target. |
--relationship.fields |
Field mappings for direct relationships. |
REST
| Option | Summary |
|---|---|
--rest |
REST exposure: false, true, or custom path. |
--rest.methods |
Stored procedures only. Replace allowed HTTP verbs. |
Source
| Option | Summary |
|---|---|
-s, --source |
Underlying database object name. |
--source.key-fields |
Required for views or non-PK tables. |
--source.params |
Stored procedures only. Replace default params. |
--source.type |
Source type: table, view, or stored-procedure. |
Parameters (stored procedures)
| Option | Summary |
|---|---|
--parameters.name |
Comma-separated list of parameter names. |
--parameters.description |
Comma-separated list of parameter descriptions. |
--parameters.required |
Comma-separated list of required flags. |
--parameters.default |
Comma-separated list of default values. |
--cache.enabled
Enable or disable caching for this entity.
Example
dab update \
Book \
--cache.enabled true
Resulting config
{
"entities": {
"Book": {
"cache": {
"enabled": true
}
}
}
}
--cache.ttl
Set cache time-to-live in seconds. Only effective if caching is enabled.
Example
dab update \
Book \
--cache.ttl 600
Resulting config
{
"entities": {
"Book": {
"cache": {
"ttl-seconds": 600
}
}
}
}
Note
Supplying TTL when cache is disabled has no effect until caching is enabled.
--description
Replace entity description.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
Book \
--description "Updated description"
Resulting config
{
"entities": {
"Book": {
"description": "Updated description"
}
}
}
--fields.exclude
Comma-separated list of fields to exclude.
Example
dab update \
Book \
--permissions "anonymous:read" \
--fields.exclude "internal_flag,secret_note"
Resulting config
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": {
"exclude": [ "internal_flag", "secret_note" ]
}
}
]
}
]
}
}
}
--fields.include
Comma-separated list of fields to include. * includes all fields. Replaces existing include list.
Example
dab update \
Book \
--permissions "anonymous:read" \
--fields.include "id,title,author"
Resulting config
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"fields": {
"exclude": [],
"include": [ "id", "title", "author" ]
}
}
]
}
]
}
}
}
--graphql
Control GraphQL exposure.
Example
dab update \
Book \
--graphql book:books
Resulting config
{
"entities": {
"Book": {
"graphql": {
"enabled": true,
"type": {
"singular": "book",
"plural": "books"
}
}
}
}
}
--graphql.operation
Stored procedures only. Sets operation type. Default is mutation.
Example
dab update \
RunReport \
--graphql.operation query
Resulting config
{
"entities": {
"RunReport": {
"graphql": {
"operation": "query"
}
}
}
}
Note
Supplying --graphql.operation for tables or views is ignored.
-m, --map
Map database fields to exposed names. Replaces the entire mapping set.
Example
dab update \
Book \
--map "id:bookId,title:bookTitle"
Resulting config
{
"entities": {
"Book": {
"fields": [
{
"name": "id",
"alias": "bookId",
"primary-key": false
},
{
"name": "title",
"alias": "bookTitle",
"primary-key": false
}
]
}
}
}
Important
Any existing mappings are overwritten. Restate all mappings you want to keep.
--permissions
Adds or updates permissions for a single role and its actions.
You can run dab update multiple times (once per role) to add multiple roles.
Example
dab update \
Book \
--permissions "anonymous:read"
dab update \
Book \
--permissions "authenticated:create,read,update"
Resulting config
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read"
}
]
},
{
"role": "authenticated",
"actions": [
{ "action": "create" },
{ "action": "read" },
{ "action": "update" }
]
}
]
}
}
}
Note
If the specified role already exists, its actions are updated; otherwise, the role is added.
--policy-database
OData-style filter appended to DB query.
Example
dab update \
Book \
--permissions "anonymous:read" \
--policy-database "region eq 'US'"
Resulting config
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"policy": {
"database": "region eq 'US'"
}
}
]
}
]
}
}
}
--policy-request
Request-level policy evaluated before hitting the database.
Example
dab update \
Book \
--permissions "anonymous:read" \
--policy-request "@claims.role == 'admin'"
Resulting config
{
"entities": {
"Book": {
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "read",
"policy": {
"request": "@claims.role == 'admin'"
}
}
]
}
]
}
}
}
--relationship
Define or update a relationship. Use with other relationship options.
Example
dab update \
User \
--relationship profile \
--target.entity Profile \
--cardinality one \
--relationship.fields "id:user_id"
Resulting config
{
"entities": {
"User": {
"relationships": {
"profile": {
"cardinality": "one",
"target.entity": "Profile",
"source.fields": [ "id" ],
"target.fields": [ "user_id" ]
}
}
}
}
}
--cardinality
Cardinality for the relationship. Use with --relationship.
Example
dab update \
User \
--relationship profile \
--target.entity Profile \
--cardinality one \
--relationship.fields "id:user_id"
--target.entity
Target entity name for the relationship. Use with --relationship.
Example
dab update \
User \
--relationship profile \
--target.entity Profile \
--cardinality one \
--relationship.fields "id:user_id"
--linking.object
Many-to-many only. Database object name used as the linking object.
Example
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
--linking.source.fields
Many-to-many only. Comma-separated list of linking object fields pointing to the source entity.
Example
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
--linking.target.fields
Many-to-many only. Comma-separated list of linking object fields pointing to the target entity.
Example
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
--relationship.fields
Colon-separated field mappings for direct relationships.
The --relationship.fields value is a comma-separated list of sourceField:targetField pairs.
Example
dab update \
User \
--relationship profile \
--target.entity Profile \
--cardinality one \
--relationship.fields "id:user_id"
Resulting config
{
"entities": {
"User": {
"relationships": {
"profile": {
"source.fields": [ "id" ],
"target.fields": [ "user_id" ]
}
}
}
}
}
--rest
Control REST exposure.
Example
dab update \
Book \
--rest BooksApi
Resulting config
{
"entities": {
"Book": {
"rest": {
"enabled": true,
"path": "/BooksApi"
}
}
}
}
--rest.methods
Stored procedures only. Replace allowed HTTP methods. Defaults to POST.
Example
dab update \
RunReport \
--rest true \
--rest.methods GET,POST
Resulting config
{
"entities": {
"RunReport": {
"rest": {
"enabled": true,
"methods": [ "get", "post" ]
}
}
}
}
Note
Supplying --rest.methods while REST is disabled has no effect.
-s, --source
Update the underlying database object.
Example
dab update \
Book \
--source dbo.Books
Resulting config
{
"entities": {
"Book": {
"source": {
"object": "dbo.Books",
"type": "table"
}
}
}
}
--source.key-fields
For views or tables without an inferred PK. Replaces existing keys. Not valid for stored procedures.
Example
dab update \
SalesSummary \
--source.type view \
--source.key-fields "year,region"
Resulting config
{
"entities": {
"SalesSummary": {
"fields": [
{ "name": "year", "primary-key": true },
{ "name": "region", "primary-key": true }
]
}
}
}
Note
Using --source.key-fields with stored procedures is not allowed.
--source.params
Stored procedures only. Replace parameter defaults.
Note
In the v1.7 prerelease CLI, --source.params is deprecated. Use --parameters.name/--parameters.description/--parameters.required/--parameters.default.
Example
dab update \
RunReport \
--source.type stored-procedure \
--source.params "year:2024,region:west"
Resulting config
{
"entities": {
"RunReport": {
"source": {
"parameters": [
{ "name": "year", "required": false, "default": "2024" },
{ "name": "region", "required": false, "default": "west" }
]
}
}
}
}
Note
Using --source.params with tables or views is not allowed.
--source.type
Change the source object type.
Example
dab update \
Book \
--source.type view
Resulting config
{
"entities": {
"Book": {
"source": {
"type": "view",
"object": "Book"
}
}
}
}
--parameters.name
Stored procedures only. Comma-separated list of parameter names.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
GetOrdersByDateRange \
--parameters.name "StartDate,EndDate" \
--parameters.required "true,true" \
--parameters.description "Beginning of date range,End of date range"
Resulting config
{
"entities": {
"GetOrdersByDateRange": {
"source": {
"parameters": [
{
"name": "StartDate",
"description": "Beginning of date range",
"required": true
},
{
"name": "EndDate",
"description": "End of date range",
"required": true
}
]
}
}
}
}
--parameters.description
Stored procedures only. Comma-separated list of parameter descriptions aligned to --parameters.name.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
GetOrdersByDateRange \
--parameters.name "StartDate,EndDate" \
--parameters.description "Beginning of date range,End of date range"
--parameters.required
Stored procedures only. Comma-separated list of true/false values aligned to --parameters.name.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
GetOrdersByDateRange \
--parameters.name "StartDate,EndDate" \
--parameters.required "true,true"
--parameters.default
Stored procedures only. Comma-separated list of default values aligned to --parameters.name.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
GetOrdersByDateRange \
--parameters.name "CustomerID" \
--parameters.default "null"
--fields.name
Name of the database column to describe.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
Products \
--fields.name Id \
--fields.primary-key true \
--fields.description "Product Id"
Resulting config
{
"entities": {
"Products": {
"fields": [
{
"name": "Id",
"description": "Product Id",
"primary-key": true
}
]
}
}
}
--fields.alias
Alias for the field. Use a comma-separated list aligned to --fields.name.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
Products \
--fields.name Id \
--fields.alias product_id
--fields.description
Description for the field. Use a comma-separated list aligned to --fields.name.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
Products \
--fields.name Id \
--fields.description "Product Id"
--fields.primary-key
Primary key flag for the field. Use a comma-separated list of true/false values aligned to --fields.name.
Note
This option is available only in the v1.7 prerelease CLI (currently RC). Install with dotnet tool install microsoft.dataapibuilder --prerelease.
Example
dab update \
Products \
--fields.name Id \
--fields.primary-key true
-c, --config
Path to the configuration file.
Example
dab update \
Book \
--description "Updated description" \
--config dab-config.json
--help
Display the help screen.
Example
dab update --help
--version
Display version information.
Example
dab update --version
Important
Changing source type may invalidate other properties. For example, views always require key-fields; stored procedures cannot define key-fields.