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
确实有。
我正在尝试通过两种方式检索 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
确实有。