Dynamics crm 2011 将EntityReference转换为实体

Dynamics crm 2011 将EntityReference转换为实体,dynamics-crm-2011,dynamics-crm,dynamic-programming,Dynamics Crm 2011,Dynamics Crm,Dynamic Programming,有人知道如何将EntityReference转换为Entity吗 受保护的覆盖无效执行(CodeActivityContext executionContext) { [输入(“电子邮件”)] [参考目标(“电子邮件”)] 公共非授权电子邮件{get;set;} 实体MyEmail=EMail.Get(executionContext); 这给了我一个错误。无法转换。一个EntityReference只是实体的逻辑名称、名称和id。因此,要获得一个实体,您只需要使用EntityReferenc

有人知道如何将EntityReference转换为Entity吗

受保护的覆盖无效执行(CodeActivityContext executionContext)
{
[输入(“电子邮件”)]
[参考目标(“电子邮件”)]
公共非授权电子邮件{get;set;}
实体MyEmail=EMail.Get(executionContext);

这给了我一个错误。无法转换。

一个
EntityReference
只是实体的逻辑名称、名称和id。因此,要获得一个
实体
,您只需要使用
EntityReference
的属性创建实体

下面是一个扩展方法,可为您执行此操作:

公共静态实体GetEntity(此EntityReference)
{
返回新实体(e.LogicalName){Id=e.Id};
}
不要忘记实体的任何其他属性都不会被填充。如果需要这些属性,则需要查询它们:

公共静态实体GetEntity(此IOR组织服务,EntityReference e)
{
return service.Retrieve(e.LogicalName,e.Id,new ColumnSet(true));
}
如果您喜欢@Konrad的字段答案,请将其设置为params数组,这样调用会更好

public static Entity GetEntity(此IOR组织服务,EntityReference),
参数字符串[]字段)
{
return service.Retrieve(e.LogicalName,e.Id,new ColumnSet(fields));
}

实体和EntityReference不同。是对包含实体GUID和逻辑名称的记录的引用。您必须通过GUID和逻辑名称访问实体。类似于:

service.Retrieve(logicalname, guid, new ColumnSet(columns));

<>你的问题最简短的答案是查询数据库,用实体引用来指出(引用)的实体。我一直把实体引用看作是(粗略)等价于C++中的指针。它有地址(GUID),但是你需要去引用它才能到达蜜。你这样做。< /P>
IOR组织服务组织=。。。;
EntityReference引用=。。。;
实体=组织.Retrieve(reference.LogicalName,reference.Id,
新列集(“field_1”、“field_2”、…、“field_z”);
当我进行大量从EntityReference到Entity的转换时,我使用字段的可选参数部署扩展方法

公共静态实体实际性(此实体引用,
IOOrganizationService组织,字符串[]字段=null)
{
如果(字段==null)
返回组织.Retrieve(reference.LogicalName,reference.Id,
新列集(true));
返回组织.Retrieve(reference.LogicalName,reference.Id,
新列集(字段));
}
你可以多读一些,比较一下