add 命令

将新的实体定义添加到现有的数据 API 生成器配置文件。 必须已创建 dab init配置。 用于 dab update 在创建后修改实体。

小窍门

用于 dab add 创建新实体并 dab update 对其进行改进。

Syntax

dab add <entity-name> [options]

快速浏览

选项 概要
<entity-name> 必需的位置参数。 逻辑实体名称。
-c, --config 配置文件路径。 默认 dab-config.json
--cache.enabled 为实体启用/禁用缓存。
--cache.ttl 缓存生存时间(以秒为单位)。
--description 实体的自由格式说明。
--fields.exclude 逗号分隔的排除字段。
--fields.include 逗号分隔的允许字段(* = 全部)。
--fields.name 要描述的字段名称(可重复或逗号分隔)。
--fields.alias 字段别名(逗号分隔,与 --fields.name右对齐)。
--fields.description 字段说明(逗号分隔,对齐)。--fields.name
--fields.primary-key 主键标志(逗号分隔,对齐)。--fields.name
--graphql GraphQL 曝光: falsetruesingularsingular:plural
--graphql.operation 仅存储过程。 QueryMutation (默认突变)。
--permissions 必填。 role:actions 对于单个角色。
--policy-database 在 DB 查询中应用的 OData 样式筛选器。
--policy-request 在数据库调用之前评估的请求策略。
--parameters.name 仅存储过程。 参数名称(逗号分隔)。
--parameters.description 仅存储过程。 参数说明。
--parameters.required 仅存储过程。 参数所需的标志。
--parameters.default 仅存储过程。 参数默认值。
--rest REST 曝光: falsetrue或自定义路由。
--rest.methods 仅存储过程。 允许的谓词:GET、、PUTPOSTPATCHDELETE。 默认 POST。
-s, --source 必填。 数据库对象名称(表、视图或存储过程)。
--source.key-fields 要用作主键的字段。
--source.params 仅存储过程。 默认参数值。
--source.type 源类型:table、、 viewstored-procedure(默认表)。
--help 显示此帮助屏幕。
--version 显示版本信息。

<entity-name>

配置中实体的逻辑名称。区分大小写。

表、视图和存储过程的快速示例

添加表格

dab add Book \
  --source dbo.Books \
  --source.type table \
  --permissions "anonymous:read" \
  --description "Example for managing book inventory"

添加视图

dab add BookView \
  --source dbo.MyView \
  --source.type view \
  --source.key-fields "id,region" \
  --permissions "anonymous:read" \
  --description "Example for managing book inventory from view"

添加存储过程

dab add BookProc \
  --source dbo.MyProc \
  --source.type stored-procedure \
  --source.params "year:2024,active:true" \
  --permissions "anonymous:execute" \
  --graphql.operation query \
  --description "Example for executing a stored procedure"

-c, --config

配置文件路径。 默认值为 dab-config.json

Example

dab add Book \
  --config ./dab-config.mssql.json \
  --source dbo.Books \
  --permissions "anonymous:read"

--cache.enabled

启用或禁用缓存。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --cache.enabled true

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ],
      "cache": {
        "enabled": true
      }
    }
  }
}

--cache.ttl

缓存生存时间(以秒为单位)。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --cache.ttl 300

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ],
      "cache": {
        "enabled": false,
        "ttl-seconds": 300
      }
    }
  }
}

--description

实体的自由文本说明。

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --description "Entity for managing book inventory"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ],
      "description": "Entity for managing book inventory"
    }
  }
}

--fields.exclude

要排除的字段的逗号分隔列表。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --fields.exclude "internal_flag,secret_note"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "read",
              "fields": {
                "exclude": [ "internal_flag", "secret_note" ]
              }
            }
          ]
        }
      ]
    }
  }
}

--fields.include

要公开的字段的逗号分隔列表。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --fields.include "id,title,price"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "read",
              "fields": {
                "include": [ "id", "title", "price" ]
              }
            }
          ]
        }
      ]
    }
  }
}

--graphql

控制 GraphQL 公开。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --graphql book:books

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ],
      "graphql": {
        "enabled": true,
        "type": {
          "singular": "book",
          "plural": "books"
        }
      }
    }
  }
}

--graphql.operation

仅存储过程。 GraphQL作类型。 默认值为 mutation

Example

dab add BookProc \
  --source dbo.MyProc \
  --source.type stored-procedure \
  --permissions "admin:execute" \
  --graphql.operation Query

生成的配置

{
  "entities": {
    "BookProc": {
      "source": { "type": "stored-procedure", "object": "dbo.MyProc" },
      "permissions": [
        { "role": "admin", "actions": [ { "action": "execute" } ] }
      ],
      "graphql": {
        "enabled": true,
        "operation": "query"
      }
    }
  }
}

--permissions

定义角色→作对。

--permissions 不可重复。 若要添加更多角色,请使用一个角色运行 dab add ,然后针对其他角色运行 dab update

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read"

dab update Book \
  --permissions "authenticated:create,read,update,delete"

--parameters.name

仅存储过程。 参数名称的逗号分隔列表。

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add GetOrdersByDateRange \
  --source dbo.usp_GetOrdersByDateRange \
  --source.type stored-procedure \
  --permissions "authenticated:execute" \
  --description "Retrieves all orders placed within a specified date range" \
  --parameters.name "StartDate,EndDate,CustomerID" \
  --parameters.description "Beginning of date range (inclusive),End of date range (inclusive),Optional customer ID filter" \
  --parameters.required "true,true,false" \
  --parameters.default ",,null"

生成的配置

{
  "entities": {
    "GetOrdersByDateRange": {
      "description": "Retrieves all orders placed within a specified date range",
      "source": {
        "object": "dbo.usp_GetOrdersByDateRange",
        "type": "stored-procedure",
        "parameters": [
          {
            "name": "StartDate",
            "required": true,
            "description": "Beginning of date range (inclusive)"
          },
          {
            "name": "EndDate",
            "required": true,
            "description": "End of date range (inclusive)"
          },
          {
            "name": "CustomerID",
            "required": false,
            "default": "null",
            "description": "Optional customer ID filter"
          }
        ]
      },
      "permissions": [
        {
          "role": "authenticated",
          "actions": [
            {
              "action": "execute"
            }
          ]
        }
      ]
    }
  }
}

--parameters.description

仅存储过程。 参数说明的逗号分隔列表与 --parameters.name.

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add GetOrdersByDateRange \
  --source dbo.usp_GetOrdersByDateRange \
  --source.type stored-procedure \
  --permissions "authenticated:execute" \
  --parameters.name "StartDate,EndDate" \
  --parameters.description "Beginning of date range (inclusive),End of date range (inclusive)"

--parameters.required

仅存储过程。 以逗号分隔的值列表 true/false 对齐 --parameters.name

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add GetOrdersByDateRange \
  --source dbo.usp_GetOrdersByDateRange \
  --source.type stored-procedure \
  --permissions "authenticated:execute" \
  --parameters.name "StartDate,EndDate" \
  --parameters.required "true,true"

--parameters.default

仅存储过程。 默认值的逗号分隔列表与 --parameters.name

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add GetOrdersByDateRange \
  --source dbo.usp_GetOrdersByDateRange \
  --source.type stored-procedure \
  --permissions "authenticated:execute" \
  --parameters.name "CustomerID" \
  --parameters.default "null"

--fields.name

要描述的数据库列的名称。

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add Products \
  --source dbo.Products \
  --permissions "anonymous:*" \
  --fields.name "ProductID,ProductName" \
  --fields.alias "product_id,product_name" \
  --fields.description "Unique identifier for each product,Display name of the product" \
  --fields.primary-key "true,false"

生成的配置

{
  "entities": {
    "Products": {
      "source": { "type": "table", "object": "dbo.Products" },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "*" } ] }
      ],
      "fields": [
        {
          "name": "ProductID",
          "alias": "product_id",
          "description": "Unique identifier for each product",
          "primary-key": true
        },
        {
          "name": "ProductName",
          "alias": "product_name",
          "description": "Display name of the product",
          "primary-key": false
        }
      ]
    }
  }
}

--fields.alias

字段的别名。 使用一个逗号分隔的列表,该列表与 --fields.name.

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add Products \
  --source dbo.Products \
  --permissions "anonymous:*" \
  --fields.name "ProductID" \
  --fields.alias "product_id"

--fields.description

字段的说明。 使用一个逗号分隔的列表,该列表与 --fields.name.

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add Products \
  --source dbo.Products \
  --permissions "anonymous:*" \
  --fields.name "ProductID" \
  --fields.description "Unique identifier"

--fields.primary-key

字段的主键标志。 使用以逗号分隔的值 true/false 列表, --fields.name该列表与值对齐。

注释

此选项仅在 v1.7 预发行版 CLI(当前 RC)中可用。 使用 dotnet tool install microsoft.dataapibuilder --prerelease. 安装 。

Example

dab add Products \
  --source dbo.Products \
  --permissions "anonymous:*" \
  --fields.name "ProductID" \
  --fields.primary-key "true"

生成的配置

{
  "entities": {
    "Products": {
      "source": { "type": "table", "object": "dbo.Products" },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "*" } ] }
      ],
      "fields": [
        {
          "name": "ProductID",
          "primary-key": true
        }
      ]
    }
  }
}

--policy-database

数据库级策略。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --policy-database "region eq 'US'"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "read",
              "policy": {
                "database": "region eq 'US'"
              }
            }
          ]
        }
      ]
    }
  }
}

--policy-request

请求级策略。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --policy-request "@claims.role == 'admin'"

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            {
              "action": "read",
              "policy": {
                "request": "@claims.role == 'admin'"
              }
            }
          ]
        }
      ]
    }
  }
}

--rest

控制 REST 曝光。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read" \
  --rest BooksApi

生成的配置

{
  "entities": {
    "Book": {
      "source": { "type": "table", "object": "dbo.Books" },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ],
      "rest": {
        "enabled": true,
        "path": "/BooksApi"
      }
    }
  }
}

--rest.methods

仅存储过程。 允许执行的 HTTP 谓词:GET、、POSTPUTPATCHDELETE。 默认为 POST。 对于表/视图忽略。

Example

dab add BookProc \
  --source dbo.MyProc \
  --source.type stored-procedure \
  --permissions "admin:execute" \
  --rest true \
  --rest.methods GET,POST

生成的配置

{
  "entities": {
    "BookProc": {
      "source": { "type": "stored-procedure", "object": "dbo.MyProc" },
      "permissions": [
        { "role": "admin", "actions": [ { "action": "execute" } ] }
      ],
      "rest": {
        "enabled": true,
        "methods": [ "get", "post" ]
      }
    }
  }
}

-s, --source

必填。 数据库对象的名称:表、视图、容器或存储过程。

Example

dab add Book \
  --source dbo.Books \
  --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

--source.key-fields

要用作主键的字段。 通过 CLI 生成视图时需要这些视图。

Example

dab add BookView \
  --source dbo.MyView \
  --source.type view \
  --source.key-fields "id,region" \
  --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "BookView": {
      "source": {
        "type": "view",
        "object": "dbo.MyView",
        "key-fields": [ "id", "region" ]
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

--source.params

仅存储过程。 逗号分隔 name:value 对。 不允许表或视图。

注释

在 v1.7 预发行版 CLI(当前 RC) --source.params 中,已弃用。 请改用--parameters.name相关--parameters.default--parameters.*选项。

Example

dab add BookProc \
  --source dbo.MyProc \
  --source.type stored-procedure \
  --source.params "year:2024,active:true" \
  --permissions "admin:execute"

生成的配置

{
  "entities": {
    "BookProc": {
      "source": {
        "type": "stored-procedure",
        "object": "dbo.MyProc",
        "parameters": [
          {
            "name": "year",
            "required": false,
            "default": "2024"
          },
          {
            "name": "active",
            "required": false,
            "default": "True"
          }
        ]
      },
      "permissions": [
        { "role": "admin", "actions": [ { "action": "execute" } ] }
      ]
    }
  }
}

--help

显示此帮助屏幕。

Example

dab add \
  --help

--version

显示版本信息。

Example

dab add \
  --version

--source.type

数据库对象的类型。 默认值:table

Example

dab add Book \
  --source dbo.Books \
  --source.type table \
  --permissions "anonymous:read"

生成的配置

{
  "entities": {
    "Book": {
      "source": {
        "type": "table",
        "object": "dbo.Books"
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}