复合查询设计器
本文将介绍复合查询设计器中的可用选项。
复合查询设计器:在 添加新项 中选择 复合查询设计,然后选择实体数据源,点击 创建,复合查询设计器 将打开。 它允许您对实体进行连接、分组、排序、报表的展示等。 复合查询模型常用于多表或者复杂查询的场景。
字段设计
基本设置
您可以在 字段设计 选项卡中指定以下基本设置:
显示名称:复合查询模型的显示名称。将在 C# 代码中生成 [DisplayName] 属性。
描述:复合查询模型的描述。 该描述将在 C# 代码中显示为注释。
关系设计面板
点击 关系 设计面板右上角的 添加数据源,可以选择或修改所需要的实体数据源。实体数据源将会显示在 关系 设计面板中。
不同的数据源之间以字段来连接。因此我们需要手动连接实体字段。有两种方式:
- 在 关系 设计面板中,点击数据源标题栏的向下图标展示数据源中的所有字段,然后通过长按并拖动鼠标把不同数据源的字段连接起来。默认为内连接(Inner Join)。可以在右侧的 关系设置 标签页中修改。关系 设计面板和 关系设置 标签页将同步更新。
- 在右侧的 关系设置 标签页中,添加和指定数据源字段以及连接方式(Inner Join、Left Join、Right Join)。
关系设置
在 关系设置 标签页中,点击 添加关系 ,然后选择数据源以及连接方式。支持以下三种方式:
- Inner Join(内连接)根据两个表之间的共同列值连接在一起,并返回满足连接条件的行。Inner Join 仅返回符合条件的行,即两个表中共有的行。
- Left Join(左连接)会返回左表中的所有行,以及与右表匹配的行(如果有的话)。如果右表中没有与左表匹配的行,则会返回 NULL 值。
- Right Join(右连接)会返回右表中的所有行,以及与左表匹配的行(如果有的话)。如果左表中没有与右表匹配的行,则会返回 NULL 值。
然后点击添加图标,选择数据源字段或者输入表达式进行连接。
可以对数据源的字段进行表达式的运算以后再进行关联。
分组设置
在 分组设置 标签页中可以对数据源的字段进行分组。将具有相同值的行组合在一起,然后可以对这些组执行聚合函数(如sum,count,avg,max,min等)。
在 分组设置 标签页中,点击 添加分组 ,然后选择分组字段或者输入表达式进行分组。
选择分组字段后,对应的字段也会自动添加为结果集字段,可以在 结果集字段 中查看或修改。
还可以通过表达式实现动态分组。
结果集字段
每个分组字段将自动添加为结果集字段,以便同步输出分组字段。你可以修改、添加、或删除字段。
在 结果集字段 标签页中,点击 添加字段。您可以修改名称和显示名称,配置值(映射)等。您还可以指定结果集字段为一个集合。在右侧设置中,还可以添加自定义特性代码。
值(映射) 可以为数据源已有字段或表达式。表达式可以对输出的结果集字段进行二次处理。
Group.Key下表示分组的字段。其他的实体表示的是分组以后的数据源。具有相同值的行将组合在一起。
QueryItems下面的实体是做了连接但未分组的数据源。
注:这些实体和数据源都表示集合,可以对其进行聚合函数和集合操作。具体使用方式,请参考:输出结果集映射。
自定义代码
您可以对结果集添加自定义代码,包括:命名空间、继承、类特性、及代码片段。
您还可以对当前结果集字段添加自定义代码,目前包括:属性特性。
具体添加方式,请参考 这个小节。
过滤器设计
您可以通过 过滤器设计 选项卡对数据进行过滤。过滤器是指根据一组逻辑(过滤条件)和用户输入(参数)对来自数据源(过滤源)的数据进行过滤。
在 过滤器设计 选项卡中创建过滤器后,如果在 服务与API设计 选项卡中选择生成带有过滤器的API,则对应的过滤器(数据)、服务(接口和业务逻辑) )、控制器(调用方法)将被生成。
您可以在 过滤器设计 选项卡进行以下设置:
- 添加过滤器参数或使用参数集合。
- 定义过滤器的逻辑条件。共有三种形式:字段、表达式 和 范围。 多个条件可以用 “且” 或 “或” 连接。
具体配置方法同“实体设计器”。请参考 实体设计器 > 过滤器设计 小节了解如何设置。
自定义代码
您可以对当前过滤器添加自定义代码,包括:命名空间、继承、类特性、及代码片段。
具体添加方式,请参考 这个小节。
服务与API设计
您可以在 服务与 API 设计 选项卡中决定是否生成控制器和服务,包括:Get
、GetList
、GetPage
。 您可以点击 添加服务 按钮添加 API 和过滤 API。
然后,您可以选择 API 后面的 生成 API 选项来为 API 生成控制器。
服务
服务与 API 设计 选项卡提供以下三种类型的服务:
- 获取单条数据 表示 Get 服务。
- 获取列表数据 表示 GetList 服务。
- 获取分页数据 表示 GetPage 服务。
您可以配置服务的以下设置:
参数设置:列出服务的请求参数。
返回设置:指定服务的每个响应字段的返回值。 您可以选择一个字段或输入一个值或表达式。
排序设置(对返回数据进行排序):(对于 GetList 和 GetPage)点击选择要排序的返回数据,然后点击 添加排序选项 选择字段或输入表达式对数据进行排序。
返回值排序设置不会影响数据库查询返回的数据源的排序,只会改变最终返回结果集的排序。
返回值排序中的数据源表示实体本身以及实体中关联的实体字段。 每个排序源可以设置多种排序规则。
描述:服务的描述。
具体配置方法同“实体设计器”。请参考 实体设计器 > 服务 小节了解如何设置。
API
服务与 API 设计 选项卡最终将影响控制器层的代码生成。 通过 API 设计器,可以轻松配置 API 请求方式、参数来源、授权等。
只需选择 生成 API 选项。 API 将自动生成。 当然,您还可以进一步配置 API。
您可以配置 API 的以下设置:
名称:API 的名称。每个 API 都有一个名称。 但需要注意的是,更改 API 的名称会影响 API 的请求路由。
方法类型:API 的默认方法类型。每个 API 都有一个请求方法。 您可以根据需要更改请求方法,也可以使用默认值。
路由模板: API 的路由格式。您可以为所有的 API 设置统一的路由格式。也可以为某个 API 单独设置路由格式。
参数设置:参数可以与不同的来源绑定; 这决定了 ASP.NET Core 如何绑定请求参数。您可以选择从以下方式获取参数:
- FromQuery:从请求查询字符串参数推断
- FromRoute:从任何与路由模板中的参数匹配的参数名称推断
- FromHeader:从请求头推断
授权设置:在项目属性页中启用授权后,API 将使用此处指定的默认策略(默认为 ASP.NET Core 默认策略)。 您还可以选择以下基本授权策略之一:使用上层策略、使用应用程序默认策略、使用匿名策略 或使用其他自定义策略。
使用上层策略:使用上层策略。 默认情况下不进行授权验证。 如果有引用的类库,则使用父类的默认策略。
使用应用程序默认策略:使用应用程序配置的默认策略。
使用匿名策略:使用匿名访问策略。 匿名访问允许请求无需身份验证即可通过。
在授权过程中,将验证指定策略下的权限设置(用户可能需要单独编码和实现策略)。
描述:API 的描述。
具体配置方法同“实体设计器”。请参考 实体设计器 > API 小节了解如何设置。
自定义代码
您可以对服务(接口)、服务(实现)、和控制器添加自定义代码,包括:命名空间、继承、类特性、及代码片段。
您还可以对当前服务与API添加自定义代码,包括:方法特性及代码片段。
具体添加方式,请参考 这个小节。