即使没有填充字段,我也需要检索实体的某些列。
我试过(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"中,我无法访问它并获得它的类型(例如)。
即使它是空的,我也需要得到它,因为在那之后,我需要在查找时获取该字段引用的实体。
希望它有意义!
感谢您的回复!
答案 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;
}
}
感谢您的帮助:)