如果是插件,您可以使用service.RetrieveMultiple 查询Language 实体,通过使用Name = “Spanish” 即Name = rawStudent["Language"] 进行过滤以获取GUID。您可以使用 fetchxml 或 QueryExpression。 Read more
private static EntityCollection GetEntityCollection(IOrganizationService service, string entityName, string attributeName, string attributeValue, ColumnSet cols)
{
QueryExpression query = new QueryExpression
{
EntityName = entityName,
ColumnSet = cols,
Criteria = new FilterExpression
{
Conditions =
{
new ConditionExpression
{
AttributeName = attributeName,
Operator = ConditionOperator.Equal,
Values = { attributeValue }
}
}
}
};
return service.RetrieveMultiple(query);
}
通过传递参数调用上述可重用方法:(确保根据您的需要修改架构名称并参数化Spanish 过滤器)
var language = GetEntityCollection(_orgService, "Language_entityschemaname", "new_name", "Spanish", new ColumnSet("languageid", "new_name"));
Guid languageid = (Guid)language[0].Id;
如果是数据导入工作,并且语言是有限的数据,例如两个条目,即。英语和西班牙语,我建议你维护一个enum,基本上是一个键:值对来内联切换它,而不是在批处理操作中查询每一行。
无论哪种情况,代码如下所示:
studentObj.Language = new EntityReference("Language_entityschemaname", new Guid(languageid));