是否可以检查实体是否以编程方式在动态CRM中"Activity"启用?



在 Dynamics CRM 2013 中创建自定义实体时,您可以选择为该实体启用活动(即在实体配置屏幕中,您可以选中"活动"复选框)。

这允许将活动记录链接到新的自定义实体。

我们有一个用 C# 开发的 CRM 插件,需要检查自定义实体是否启用了"活动",因为插件需要创建链接到自定义实体记录的活动记录。

有没有办法检查实体是否以编程方式启用了"活动"?

您可以使用

RetrieveEntityRequest来查明是否为活动启用了实体。RetrieveEntityResponse包含一个EntityMetadata对象,其中包含OneToManyRelationships

当实体与活动指针实体有关系时,将为活动启用该实体。

代码示例:

var metaResponse = (RetrieveEntityResponse)proxy.Execute(new RetrieveEntityRequest
{
    EntityFilters = EntityFilters.Relationships,
    LogicalName = "account",
    RetrieveAsIfPublished = false
});
bool isActivityEnabled =
    metaResponse.EntityMetadata.OneToManyRelationships
    .Any(r => r.ReferencingEntity == "activitypointer");

不要设置RetrieveAsIsPublished = true 。当然,设置此属性也可以省略,但为了清楚起见,我保留了它。学分归SimonM,请参阅下面的评论部分。

最新更新