OrganizationService.Retrieve与XrmServiceContext.AccountSet

时间:2016-12-14 22:44:43

标签: dynamics-crm dynamics-crm-2011 crm

我正在尝试以两种方式检索ActivityPointer:

第一种方式

public Entity GetEntity(NonNullable<string> entityTypeName, Guid entityId)
{
    return
        _organizationService.Retrieve(
            entityTypeName, entityId,
            new ColumnSet(true));
}

第二种方式

public ActivityPointer GetServiceActivity(Guid entityId)
{
    return _xrmServiceContext.ActivityPointerSet.FirstOrDefault(x => x.Id == entityId);
}

当为entityId传入相同的guid时,为什么第一种方式会返回一个明显更小的对象?

1 个答案:

答案 0 :(得分:1)

您试图完全比较两个不同的对象。基础对象Entity属于Microsoft.Xrm.Sdk.Entity类型,而基础对象ActivityPointer属于Microsoft.Xrm.Client.CrmEntity类型。

Microsoft.Xrm.Client.CrmEntity占用空间更大的原因之一是因为它包含相关的实体记录元数据,当您尝试访问相关的实体属性时,这些元数据是延迟加载的。因此,关联实体越多,对象越大,在这种情况下activitypointer确实有。