hel*_*o B 10 dynamic-programming dynamics-crm dynamics-crm-2011
有谁知道如何将EntityReference转换为实体.
protected override void Execute(CodeActivityContext executionContext)
{
[Input("Email")]
[ReferenceTarget("email")]
public InArgument<Entity> EMail { get; set; }
Entity MyEmail = EMail.Get<Entity>(executionContext);
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误.无法转换此.
Kon*_*ten 16
对问题的最简单回答是在数据库中查询实体引用指出(引用)的实体.我一直认为实体引用(粗略)等同于C++中的指针.它有地址(guid),但你需要取消引用它以获得蜂蜜.你是这样做的.
IOrganizationService organization = ...;
EntityReference reference = ...;
Entity entity = organization.Retrieve(reference.LogicalName, reference.Id,
new ColumnSet("field_1", "field_2", ..., "field_z"));
Run Code Online (Sandbox Code Playgroud)
当我从EntityReference转换为Entity进行大量转换时,我使用字段的可选参数部署扩展方法.
public static Entity ActualEntity(this EntityReference reference,
IOrganizationService organization, String[] fields = null)
{
if (fields == null)
return organization.Retrieve(reference.LogicalName, reference.Id,
new ColumnSet(true));
return organization.Retrieve(reference.LogicalName, reference.Id,
new ColumnSet(fields));
}
Run Code Online (Sandbox Code Playgroud)
您可以阅读更多内容并比较EntityReference和Entity.
Dar*_*ryl 14
An EntityReference只是实体的logicalName,name和id.所以要获得一个Entity,你只需要使用的属性创建实体EntityReference.
这是一个为您执行的扩展方法:
public static Entity GetEntity(this EntityReference e)
{
return new Entity(e.LogicalName) { Id = e.Id };
}
Run Code Online (Sandbox Code Playgroud)
不要忘记将不会填充实体的任何其他属性.如果您需要您需要查询的属性:
public static Entity GetEntity(this IOrganizationService service, EntityReference e)
{
return service.Retrieve(e.LogicalName, e.Id, new ColumnSet(true));
}
Run Code Online (Sandbox Code Playgroud)
如果你喜欢@ Konrad的Field回答,那就把它变成一个params数组,它可以更好地调用
public static Entity GetEntity(this IOrganizationService service, EntityReference e,
params String[] fields)
{
return service.Retrieve(e.LogicalName, e.Id, new ColumnSet(fields));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25330 次 |
| 最近记录: |