OrganizationService.Retrieve 对比 XrmServiceContext.AccountSet

OrganizationService.Retrieve vs. XrmServiceContext.AccountSet

我正在尝试通过两种方式检索 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 时,为什么第一种方式 return 一个小得多的对象?

您正试图同时比较 2 个不同的对象。基础对象 Entity 的类型为 Microsoft.Xrm.Sdk.Entity, while the underlying object ActivityPointer is of the type Microsoft.Xrm.Client.CrmEntity

Microsoft.Xrm.Client.CrmEntity 占地面积较大的原因之一是因为它包含相关实体记录元数据,当您尝试访问相关实体 属性 时会延迟加载。因此,相关实体越多,对象越大,在本例中 activitypointer 确实有。