Microsoft Dynamics 365 中的实体属性简介

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

实体包含表示每个记录可以包含的数据的属性集。 开发人员需要了解不同类型的属性以及如何使用它们。 属性的元数据描述了不同类型属性的有效操作和行为。 有几类属性可以按常见行为进行分组。

有经验的专业开发人员将依赖于他们的开发风格。详细信息:0fcf59aa-d564-4c9b-9042-40df8664f831#entity_programming。

备注

本主题包含了对许多体元数据属性的引用。若要查看您的组织的实体元数据,请安装浏览组织的元数据中描述的元数据浏览器解决方案。 您还可以在一个名为 EntityMetadata.xlsx 的 Excel 文件中查看非自定义组织的元数据,该文件包含在 SDK 下载的顶级文件夹中。

在本主题中

对属性的有效操作

属性类型

分类数据属性

集合数据属性

日期和时间数据属性

图像数据属性

数量数据属性

引用数据属性

字符串数据属性

唯一标识符数据属性

虚拟的属性

逻辑属性

对属性的有效操作

每个属性都有描述它支持的操作的元数据。 您需要知道对您处理的属性有效的操作。

AttributeMetadata 属性

说明

IsValidForCreate

在创建记录时,如果被设置的此属性值有效,则为 True,否则为 false。

IsValidForRead

如果可检索此属性值,则为 True,否则为 false。

IsValidForUpdate

在更新记录时,如果被设置的此属性值有效,则为 True,否则为 false。

属性类型

在元数据中定义属性且 AttributeMetadata.AttributeTypeName 属性包含描述类型的值。 静态 AttributeTypeDisplayName 成员提供可能类型的列表。

备注

早期的 AttributeType 属性包含与 AttributeTypeName 几乎一致的数据,除了它显示作为 VirtualImageType 属性。 您应使用 AttributeTypeName 属性而非 AttributeType 属性。

以下各节组属性类型为以下类别中,以便可以轻松比较这些:

  • 分类数据属性

  • 集合数据属性

  • 日期和时间数据属性

  • 图像数据属性

  • 数量数据属性

  • 引用数据属性

  • 字符串数据属性

  • 唯一标识符数据属性

  • 虚拟的属性

分类数据属性

此组中的所有五个属性都从通用的 EnumAttributeMetadata 基类继承并使用一组预定义的有效值将记录分组到类别。

使用带有被设置为表示元数据内有效选项的整数的 Value 属性集的 OptionSetValue 设置选择列表、状态和状态属性。

使用布尔值设置布尔属性,但是要注意这是仅局限于两个选项的分类。

EntityName 属性使用组织中约束为有效实体逻辑名称的字符串值。

自定义选择列表和布尔属性可定义为计算属性。详细信息:26ada6f7-3e22-465c-90f8-19d326785eb4#BKMK_Calculated。

元数据类型

AttributeTypeName 值

说明

PicklistAttributeMetadata

PicklistType

OptionMetadata.Value 中设置在 OptionSetMetadata.Options 内定义的属性的有效值。

在应用程序中的自定义工具中,这些属性称为“选项集”字段。

StatusAttributeMetadata

StatusType

这些系统属性通常叫做StatusCode。 在 StatusOptionMetadata.Value 中设置在 OptionSetMetadata.Options 内定义的属性的有效值。

每个选项的StatusOptionMetadata.State属性描述相应的 StateCode值的有效值。 在设置StatusCode之前,应验证它对于当前StateCode值是否有效。 当需要改变记录的状态时,使用 SetStateRequest消息设置StatusCodeStateCode属性值。

这些属性可以对于值的设置有进一步限制。 当EntityMetadata.EnforceTransitions的值为有效时,StatusOptionMetadata.TransitionData属性可包含所允许的选项的信息。详细信息:定义自定义状态模型转换

StateAttributeMetadata

StateType

这些系统属性通常叫做StatusCode。 在 StateOptionMetadata.Value 中设置在 OptionSetMetadata.Options 内定义的属性的有效值。

StateCode对于更新无效。 记录创建后,只能使用SetStateRequest信息设置StateCode

每个选项的StateOptionMetadata.DefaultStatus属性描述若在SetStateRequest中没有被设置为参数的默认StatusCode

BooleanAttributeMetadata

布尔类型

直接使用布尔布尔值,可以设置属性,但是,就像它们还有与 TrueOption属性和 OptionSet属性对应于布尔选项的FalseOption属性。 每个属性都定义表示一组本地化标签,他们代表属性的对与错。 在应用程序中的自定义工具中,这些属性称为“两个选项”字段,因为每个选项的含义可以任意任意方式排斥匹配选项,而不仅是对错。 例如,选项可大可小。

EntityNameAttributeMetadata

EntityNameType

这些系统属性通常与唯一标示符或多种类型的有效引用属性匹配。 此属性的值是代表实体的逻辑名称的字符串值。 如果对应引用属性是 EntityReference,那么此属性的值与 EntityReference.Name属性值相同。

集合数据属性

这些系统属性返回值的集合。

AttributeTypeName 值

说明

CalendarRulesType

没有使用CalendarRulesType的实际属性。 使用早期绑定样式时,代码生成工具将创建不出现在元数据中的下列两模拟的属性。 这些属性实际表示与一对多关系关联到实体实例的日历规则记录的视图。

  • Calendar.CalendarRules关系:calendar_calendar_rules

  • Service.CalendarRules关系:service_calendar_rules

PartyListType

以下属性允许为多重类型活动设置多个 EntityReference

ActivityPointer.allparties
Appointment.OptionalAttendees
Appointment.Organizer
Appointment.requiredattendees
CampaignActivity.from
CampaignActivity.Partners
CampaignResponse.Customer
CampaignResponse.from
CampaignResponse.Partner
Email.bcc
Email.cc
Email.from
Email.to
Fax.from
Fax.to
Letter.bcc
Letter.cc
Letter.from
Letter.to
PhoneCall.from
PhoneCall.to
RecurringAppointmentMaster.OptionalAttendees
RecurringAppointmentMaster.Organizer
RecurringAppointmentMaster.RequiredAttendees
ServiceAppointment.Customers
ServiceAppointment.Resources
SocialActivity.From
SocialActivity.Resources
SocialActivity.To

日期和时间数据属性

DateTimeType的元数据AttributeTypeName值的属性。 使用System.DateTime设置这些属性。

DateTimeAttributeMetadata.Format是下列 DateTimeFormat值中的一个:

  • DateAndTime:显示日期和时间。

  • DateOnly:只显示日期

自定义日期和时间属性可定义为计算或汇总属性。详细信息:计算和汇总属性

图像数据属性

对于支持图像属性的实体,实体图像属性的 SchemaName 始终 EntityImage

详细信息:图像属性、8597998f-764f-4c73-b63d-9f5e02c78061#BKMK_EntityImages 和 示例:设置和检索实体图像

数量数据属性

这种类别的属性使用数值数据。 这些属性中每一个都有一个MaxValueMinValue元数据属性来设置有效值的范围。

自定义日期、时间和货币属性可定义为计算或汇总属性。详细信息:计算和汇总属性

元数据类型

AttributeTypeName 值

说明

BigIntAttributeMetadata

数据类型

BigInt 属性仅供内部使用。

DecimalAttributeMetadata

DecimalType

使用小数值。

Precision元数据属性设置属性将使用值的精度。

DoubleAttributeMetadata

DoubleType

使用双重值。

Precision元数据属性设置属性将使用值的精度。

IntegerAttributeMetadata

IntegerType

使用int值。

MoneyAttributeMetadata

MoneyType

使用具有 decimalValue 属性的 Money

,每个货币属性都有一个对应的系统计算基础货币属性,当组织中的多币种启用时,其用于计算组织中基础货币的值。IsBaseCurrency属性识别货币属性是否表示基础货币。详细信息:TransactionCurrency(货币)实体

货币属性还具有可以指定应使用的精度级别 PrecisionSource元数据属性。 此属性的整数值确定是否:

  • 0:精度取决于 Precision元数据属性。

  • 1: Organization.PricingDecimalPrecision值。

  • 2:与当前记录关联的 TransactionCurrency.CurrencyPrecision

引用数据属性

这些属性通常指查找属性并且它们中的每一个包含一个EntityReference值。 这些属性之间的差别是他们所关联实体的种类。Targets元数据包含表示查找有效目标的有效实体名称的String[]。 自定义查找属性在Targets属性中只有一种。

PartyListType也表示引用数据属性,但是因为它们包含引用集合,所以包含在集合数据属性中。

元数据类型

AttributeTypeName 值

说明

LookupAttributeMetadata

CustomerType

这些系统查找属性可以连接到客户或联系人实体记录。

Contact.ParentCustomerId
Contract.BillingCustomerId
Contract.CustomerId
ContractDetail.CustomerId
CustomerOpportunityRole.CustomerId
CustomerRelationship.CustomerId
CustomerRelationship.PartnerId
Entitlement.CustomerId
Incident.CustomerId
Invoice.CustomerId
Lead.CustomerId
Opportunity.CustomerId
Quote.CustomerId
SalesOrder.CustomerId
SocialActivity.PostAuthor
SocialActivity.PostAuthorAccount
SocialProfile.CustomerId

LookupType

这些查找属性可以用于设置所表示类型的记录的引用。

某些系统查找没有Targets属性的值设置,但是预期的实体应该明显基于与查找相连的实体关系。

OwnerType

这些系统查找通常名为OwnerId并且每个用户拥有的实体都有一个。 他们可以引用 SystemUser 或团队记录。

字符串数据属性

有两种属性类型使用字符串数据。

元数据类型

AttributeTypeName 值

说明

StringAttributeMetadata

字符串类型

格式可应用的字符串值的属性。详细信息:89969adc-8577-424c-bfcc-7f65c5d4bd19#BKMK_StringAttributeMetadataFormats。

自定义字符串属性可定义为计算属性。详细信息:26ada6f7-3e22-465c-90f8-19d326785eb4#BKMK_Calculated。

MemoAttributeMetadata

MemoType

字符串值的属性用于注释。 这些属性与为TextArea设置的FormatName属性值的字符串属性是等价的。

唯一标识符数据属性

使用UniqueidentifierType的元数据AttributeTypeName值的属性包含可为空的System.Guid值。

每个实体实例包含记录中表示唯一标识符的属性。 该属性具有遵循命名约定<实体架构名称>+Id 的架构名称。 例如,代表唯一标识符属性的客户实体的架构名称为AccountId。 这些值适用于直接使用Entity.Id属性。 当您检索实体时,即使不包含在查询的ColumnSet中,此属性也始终返回。 对于新的实例化的实体,此值为空。 当您创建新的记录时,尽管设置 Guid 值来定义唯一标识符是有效的,为了最佳性能,我们推荐您保留其为空并在记录创建时让系统赋值。 在保存记录后该值将变为只读状态。

实体可包括其他取决于实体功能的唯一标识符属性。 例如,业务流程启用的实体包含ProcessIdStageId唯一标识符属性用于跟踪当前有记录的业务流程。 然而,一般使用EntityReference的某些系统关系使用唯一标识符。 例如客户和联系人实体每个都有两个唯一标识符 (Address1_AddressId) 和 Address2_AddressId,它们与在创建客户或联系人时创建的 CustomerAddress 记录相对应。

虚拟的属性

实体元数据包括带有VirtualType的元数据的AttributeTypeName值的某些属性。 这些属性不能在代码中使用。

逻辑属性

逻辑属性包含存与其他实体属性不同的数据库表中的值。 大多数情况下该内部实施与 Microsoft Dynamics 365 的操作不相关。 当您使用逻辑属性作为计算字段时,计算字段中值不能被储存。 如果属性是逻辑属性,使用 AttributeMetadata属性检测IsLogical

最常用的属性是特定实体中所存储地址的信息:CompetitorAddress、CustomerAddress、InternalAddress、LeadAddress和 PublisherAddress。 有 8 个系统实体,包括使用逻辑属性的一组完整的两个地址属性。 这些属性都以“Address*”开头,例如 Address1_City或Address2_Latitude。

另请参阅

在 Microsoft Dynamics 365 中引入实体
图像属性
计算和汇总属性
示例:检索有效的状态转换
示例:设置和检索实体图像

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权