表包括表示每个记录中可包含的数据的列的集合。 开发人员需要了解不同类型的列以及如何使用这些列。
列名称
与表一样,每个列在创建时都有一个唯一的名称。 此名称以多种方式显示:
| 名称 | 说明 |
|---|---|
SchemaName |
通常,Pascal 大小写版本的逻辑名称。 例如:AccountNumber |
LogicalName |
所有小写名称。 例如:accountnumber |
创建自定义列时,选定的名称会加上与该列所属解决方案的解决方案发布者相关联的自定义前缀值。
创建列后无法更改列的名称。
每个列还有两个可以显示本地化值的属性。 这些属性的值用于引用应用中的列。
| 名称 | 说明 |
|---|---|
DisplayName |
通常,与架构名称相同,但可以包含空格。 例如: 帐户号 |
Description |
描述列或向用户提供指导的简短句子。 例如: 键入帐户的 ID 号或代码,以便在系统视图中快速搜索和标识帐户。 在模型驱动应用中,当用户将鼠标悬停在窗体中的列上时,将显示此信息。 |
这些是可本地化的值,用于引用应用程序中的列。 可以随时更改这些值。 若要添加或编辑本地化值,请参阅 将自定义表、窗体和列文本翻译为其他语言。
列类型
该 AttributeTypeName 属性描述列的类型。 此属性包含一个类型的 AttributeTypeDisplayName值,它为存在的每种不同类型的列提供标签。
注释
不要被 AttributeType 属性混淆。 在此较旧属性中的值大多与AttributeTypeName相符,但显示ImageAttributeMetadata和MultiSelectPicklistAttributeMetadata时作为Virtual。 引用属性 AttributeTypeName 而不是 AttributeType 属性。
在下表中:
- 这些类型按类别分组进行比较。
- 对于每个
AttributeTypeDisplayName值,相应的 .NET 程序集 AttributeMetadata 派生类包含在可用位置。 这些类型与AttributeTypeDisplayName标签之间没有 1:1 关系。 - 可以创建自定义列的列类型包括 UI 中显示的相应标签。
| 类别 | 属性类型显示名称/ AttributeMetadata 类型 |
可以创建/ 标签 |
说明 |
|---|---|---|---|
| 分类 | BooleanTypeBooleanAttributeMetadata |
Yes 两个选项 |
包含“是/否”中的选定值,该值通常指示 true 或 false 值。 详细信息: 选择 |
| 分类 | EntityNameTypeEntityNameAttributeMetadata |
No | 包含一个值,该值对应于系统中的表。 仅供内部使用。 |
| 分类 | MultiSelectPicklistTypeMultiSelectPicklistAttributeMetadata |
Yes 多选选项集 |
包含多个选定值,可在其中选择多个值。 详细信息: 选项 选项列 |
| 分类 | PicklistTypePicklistAttributeMetadata |
Yes 选项集 |
包含选定值,可在其中选择一个选项。 详细信息: 选择 |
| 分类 | StateTypeStateAttributeMetadata |
No | 包含描述表记录状态的值。 详细信息: 选择 |
| 分类 | StatusTypeStatusAttributeMetadata |
No | 包含描述表记录状态原因的值。 详细信息: 选择 |
| 系列 | CalendarRulesType |
No | 包含表记录的 CalendarRules 集合。没有任何列使用此类型。 生成代理时,代码生成工具将创建定义中不存在的两个模拟列。 这些列展示了与表记录存在一对多关系的日历规则记录的视图。 |
| 系列 | PartyListType |
No | 包含表记录的 ActivityParty 集合。详细信息: ActivityParty 表 |
| 日期和时间 | DateTimeTypeDateTimeAttributeMetadata |
Yes 日期和时间 |
包含日期和时间值。 所有日期和时间列均支持从 1753年1月1日 00:00 开始的值。 |
| File | FileTypeFileAttributeMetadata |
Yes 文件 |
包含支持检索表记录的二进制数据的数据。 详细信息: 使用代码处理文件列定义 |
| 图像 | ImageTypeImageAttributeMetadata |
Yes 图像 |
包含支持检索表记录的图像数据的数据。 详细信息: 实体图片 |
| 托管属性 | ManagedPropertyTypeManagedPropertyAttributeMetadata |
No | 包含描述在托管解决方案中包含时是否可以自定义存储在表记录中的解决方案组件的数据。 详细信息: 托管属性 |
| 数量 | BigIntTypeBigIntAttributeMetadata |
Yes | 包含一个 BigInt 值。 |
| 数量 | DecimalTypeDecimalAttributeMetadata |
Yes 十进制数 |
包含一个 Decimal 值。 该 Precision 属性设置精度级别。 |
| 数量 | DoubleTypeDoubleAttributeMetadata |
Yes 浮点数 |
包含一个 Double 值。 该 Precision 属性设置精度级别。 |
| 数量 | IntegerTypeIntegerAttributeMetadata |
Yes 整数 |
包含一个值Int |
| 数量 | MoneyTypeMoneyAttributeMetadata |
Yes 货币 |
包含一个 Decimal 值。 该 PrecisionSource 属性确定设置精度级别的位置。0: Precision属性1:列 Organization.PricingDecimalPrecision2: TransactionCurrency.CurrencyPrecision 表中记录的列 |
| 参考 | CustomerTypeLookupAttributeMetadata |
Yes 客户 |
包含对帐户或联系人表中的记录的引用。 |
| 参考 | LookupTypeLookupAttributeMetadata |
Yes 查找 |
包含对表记录的引用。 有效记录的逻辑名称通常存储在列的属性中 Targets 。 |
| 参考 | OwnerTypeLookupAttributeMetadata |
No | 包含对用户或团队表记录的引用。 |
| 字符串 | MemoTypeMemoAttributeMetadata |
Yes 多行文本 |
包含要在多行文本框中显示的字符串值。 |
| 字符串 | StringTypeStringAttributeMetadata |
Yes 单行文本 |
包含要在单行文本框中显示的字符串值。 |
| 唯一标识符 | UniqueidentifierTypeUniqueIdentifierAttributeMetadata |
No | 包含 GUID 唯一标识符值。 |
| 虚拟 | VirtualType |
No | 这些列不能在代码中使用,通常可以忽略。 |
列支持的操作及表单使用方法
每列包含布尔属性,这些属性描述它可以参与的操作类型,以及它如何在表单中展示。
| 财产 | 说明 |
|---|---|
IsRequiredForForm |
是否必须将该列包含在表单中 |
IsValidForCreate |
能否在创建操作中设置列值 |
IsValidForForm |
是否可以在窗体中包含该列 |
IsValidForRead |
是否可以检索该列值 |
IsValidForUpdate |
是否可以在更新操作中设置列值 |
如果尝试在创建或更新操作中为不符合该操作条件的列设置值,该值将被忽略。 如果尝试检索不允许读取的列,则将返回 null 值。
列要求级别
该 RequiredLevel 属性是一个布尔托管属性,描述是否需要列值。
此属性可以设置以下值:
| 名称 | Value | UI 标签 | 说明 |
|---|---|---|---|
None |
0 | 可选 | 未指定任何要求。 |
SystemRequired |
1 | 系统必需 | Dataverse 要求列具有值。 |
ApplicationRequired |
2 | 业务所需 | 应用程序要求列具有值。 |
Recommended |
3 | 业务推荐 | 建议列中应有一个具体的值。 |
Dataverse 仅对系统创建的列强制执行 SystemRequired 该选项。 无法将自定义列设置为使用 SystemRequired 该选项。 如果应用的列 ApplicationRequired 没有值,Dataverse 不会返回错误。
模型驱动应用强制执行 ApplicationRequired 选项,并为 Recommended 选项使用不同的展示。 自定义客户端的创建者可以使用此信息来要求类似的验证或演示选项。
由于 RequiredLevel 是托管属性,因此作为托管解决方案的发布者,你可以决定解决方案使用者能否在解决方案中的列上更改这些设置。
详细信息: 托管属性
专用列
公式、汇总和计算列使用户无需手动执行计算并专注于其工作。 系统管理员可以定义一个列来包含许多常见计算的值,而无需与开发人员合作。 开发人员还可以使用平台功能来执行这些计算,而不是在其自己的代码中。
提示列是 Microsoft Dataverse 中的一种基于 AI 的数据类型,可让您定义与表中其他列关联的自然语言提示。
详细信息:
列格式
列的格式值控制它在模型驱动应用中的显示方式。 自定义应用的开发人员可以使用此信息创建类似的体验。
整数格式
使用带有整数列的 Format 属性来显示此类型的备用用户体验。
| 选项 | 说明 |
|---|---|
None |
显示用于编辑数字值的文本框 |
Duration |
显示包含时间间隔的下拉列表。 用户可以从列表中选择值,也可以键入表示分钟数的整数值。 |
TimeZone |
显示包含时区列表的下拉列表。 |
Language |
显示一个下拉列表,其中包含为组织启用的语言列表。 如果未启用其他语言,基本语言将是唯一选项。 保存的值为该语言的 LCID 值。 |
字符串格式
使用FormatName属性与字符串列一起,通过StringFormatName设置值,以控制字符串列的格式。
| 名称 | 说明 |
|---|---|
Email |
窗体列将文本值验证为电子邮件地址,并在列中创建 mailto 链接。 |
PhoneNumber |
表单列包含一个链接,用于使用 Skype 发起电话呼叫。 |
PhoneticGuide |
仅供内部使用。 |
Text |
窗体显示文本框。 |
TextArea |
窗体显示文本区域列。 |
TickerSymbol |
窗体显示一个链接,点击该链接可查看股票代码的报价。 |
URL |
表单显示用于打开 URL 的链接。 |
VersionNumber |
仅供内部使用。 |
日期和时间格式
该 DateTimeBehavior 属性控制日期和时间列的行为。
提供三个选项:
| 选项 | 简短说明 |
|---|---|
UserLocal |
将日期和时间值存储为系统中的 UTC 值。 |
DateOnly |
在系统中,将实际日期值存储为时间值为午夜12:00(00:00:00)。 |
TimeZoneIndependent |
将实际日期和时间值存储在系统中,而不考虑用户时区。 |
使用Format属性来控制值在模型驱动应用中的显示方式,而不考虑DateTimeBehavior。
| 选项 | 说明 |
|---|---|
| DateAndTime | 显示完整日期和时间 |
| DateOnly | 仅显示日期。 |
详细信息:日期及时间列的行为和格式
自动编号列
可以为任何表添加自动编号列。 目前,你可以以编程方式添加列。 没有用于添加此类型的列的用户界面。 详细信息: 创建自动编号列
选择
显示一组选项的列可以引用列定义的一组选项,也可以引用可由多个列共享的单独选项集。 当一列中的值也适用于其他列时,这很有用。 通过引用一组常见的选项,可以在一个位置维护这些选项。 可以共享的选择是 全局 选择。 列内定义的是 本地 选择。
检索选项数据
SDK for .NET 提供可用于检索列使用的选项的请求类。
使用 SDK for .NET 检索选项
每个包含选项的列都继承自EnumAttributeMetadata,并包含一个OptionSet 属性。 此属性包含OptionSetMetadata,其包括Options 属性中的选项。
使用 SDK for .NET,可以使用以下请求类检索有关选择的信息:
| Request 类 | 说明 |
|---|---|
| RetrieveAllOptionSetsRequest | 检索有关所有 全局 选项的数据 |
| RetrieveAttributeRequest | 检索有关列的数据,包括任何选择 |
| RetrieveMetadataChangesRequest | 基于可包含选择的查询检索元数据 详细信息: 查询架构定义 |
| RetrieveOptionSetRequest | 检索有关 全局 选项的数据。 |
详细信息:
使用 Web API 检索选择值
Web API 提供用于查询选择值的 RESTful 样式。 可以通过检索表中的列来检索本地或全局选择。 以下示例返回 OptionSetMetadataAccount.AccountCategoryCode 属性中包含的选项。
GET <organization url>/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes(LogicalName='accountcategorycode')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?$select=LogicalName&$expand=OptionSet
使用 Web API,还可以使用 RetrieveMetadataChanges 函数。
列映射
在现有表记录的上下文中创建新表记录时,可以将现有表记录中的某些值作为新表记录的默认值自动传输。 这简化了使用模型驱动应用的人员的数据输入。 应用程序用户会看到映射的值,并且可以在保存实体之前对其进行编辑。
对于创建自定义客户端的开发人员,可以使用 InitializeFrom 消息(SDK InitializeFromRequest 类 或 Web API InitializeFrom 函数)获取已配置的默认值集的实体数据来实现相同的行为。
更多信息
逻辑列
逻辑列包含的值存储在与表中其他列不同的数据库表中。 在大多数情况下,此内部实现与使用 Dataverse 无关。 将逻辑列用作计算字段的源时,无法对计算字段中的值进行排序。 使用 AttributeMetadata.IsLogical 属性检测属性是否为逻辑属性。