是否可以通过编程方式检查实体是否在 Dynamics CRM 中启用 "Activity"?
Is it possible to check if an Entity is "Activity" enabled in Dynamics CRM programatically?
在 Dynamics CRM 2013 中创建自定义实体时,您可以选择为该实体启用活动(即在实体配置屏幕中,您可以选中 "Activities" 复选框)。
这允许 Activity 条记录链接到新的自定义实体。
我们有一个用 C# 开发的 CRM 插件,需要检查自定义实体是否启用了 "Activity",因为插件需要创建链接到自定义实体记录的 Activity 记录。
有没有办法检查实体是否以编程方式 "Activity" 启用?
您可以使用 RetrieveEntityRequest
来查明实体是否启用了活动。 RetrieveEntityResponse
包含一个 EntityMetadata
对象,其中包含 OneToManyRelationships
.
当实体与 activitypointer 个实体有关系时,它就可以进行活动。
代码示例:
var metaResponse = (RetrieveEntityResponse)proxy.Execute(new RetrieveEntityRequest
{
EntityFilters = EntityFilters.Relationships,
LogicalName = "account",
RetrieveAsIfPublished = false
});
bool isActivityEnabled =
metaResponse.EntityMetadata.OneToManyRelationships
.Any(r => r.ReferencingEntity == "activitypointer");
Do not set RetrieveAsIsPublished = true
. Of course setting this property can as well be omitted, but I left it in sake of clarity. Credits go to SimonM, see comments section below.
在 Dynamics CRM 2013 中创建自定义实体时,您可以选择为该实体启用活动(即在实体配置屏幕中,您可以选中 "Activities" 复选框)。
这允许 Activity 条记录链接到新的自定义实体。
我们有一个用 C# 开发的 CRM 插件,需要检查自定义实体是否启用了 "Activity",因为插件需要创建链接到自定义实体记录的 Activity 记录。
有没有办法检查实体是否以编程方式 "Activity" 启用?
您可以使用 RetrieveEntityRequest
来查明实体是否启用了活动。 RetrieveEntityResponse
包含一个 EntityMetadata
对象,其中包含 OneToManyRelationships
.
当实体与 activitypointer 个实体有关系时,它就可以进行活动。
代码示例:
var metaResponse = (RetrieveEntityResponse)proxy.Execute(new RetrieveEntityRequest
{
EntityFilters = EntityFilters.Relationships,
LogicalName = "account",
RetrieveAsIfPublished = false
});
bool isActivityEnabled =
metaResponse.EntityMetadata.OneToManyRelationships
.Any(r => r.ReferencingEntity == "activitypointer");
Do not set
RetrieveAsIsPublished = true
. Of course setting this property can as well be omitted, but I left it in sake of clarity. Credits go to SimonM, see comments section below.