使用ColumnSet检索空列

时间:2015-09-14 11:58:13

标签: c# entity dynamics-crm crm

即使没有填充字段,我也需要检索实体的某些列。

我试过(serv是一个OrganizationService对象):

Entity entity = serv.Retrieve(entityName, entityId, new ColumnSet(true));

Entity entity = serv.Retrieve(entityName, entityId, new ColumnSet(new String[] { "my_column" }));

但是," my_column"尚未设置,所以在我的对象" entity"中,我无法访问它并获得它的类型(例如)。

即使它是空的,我也需要得到它,因为在那之后,我需要在查找时获取该字段引用的实体。

希望它有意义!

感谢您的回复!

2 个答案:

答案 0 :(得分:1)

只需访问以下属性:

var myLookup = entity.GetAttributeValue<EntityReference>("my_column");

当字段&#34; my_column&#34;尚未设置,myLookup将为null

在接下来的代码行中,您可以像下面这样设置属性:

entity["my_column"] = new EntityReference("my_entity", id);

此处id表示Guid。当该属性尚未存在时,将创建该属性。

答案 1 :(得分:1)

我解决了我的问题。

以下是我可以帮助某人的方法:

EntityMetadata metadata = EntityAttributeMetadataCache.Instance.Retrieve(entityName);
if (metadata != null)
{
    AttributeMetadata attrMetadata = metadata.Attributes.Where(x => x.LogicalName == fieldName).FirstOrDefault();
    if (attrMetadata is LookupAttributeMetadata)
    {
        LookupAttributeMetadata lookupAttr = (LookupAttributeMetadata)attrMetadata;
        EntityReference er = new EntityReference(lookupAttr.Targets[0], guid);
        return er; 
    }
}

感谢您的帮助:)