C# Dynamics CRM插件查找

C# Dynamics CRM插件查找,c#,plugins,dynamics-crm,C#,Plugins,Dynamics Crm,我正在为Dynamics CRM编写一个插件。 我的设想: 我有两个实体学生数据原始数据和语言 我正在尝试将StudentDataRaw实体映射到StudentData实体。StudentDataRaw实体具有语言的文本框。 如何根据“StudentDataRaw”实体的文本框值(即英语/西班牙语)获取“Language”实体的GUID 这行不通,因为 ((EntityReference)rawStudent["Language"]) 包含文本框值(即英语/西班牙语) 我需要获取语言实体的英语

我正在为Dynamics CRM编写一个插件。 我的设想: 我有两个实体<代码>学生数据原始数据和
语言

我正在尝试将StudentDataRaw实体映射到StudentData实体。StudentDataRaw实体具有语言的文本框。 如何根据“StudentDataRaw”实体的文本框值(即英语/西班牙语)获取“Language”实体的GUID

这行不通,因为

((EntityReference)rawStudent["Language"])
包含文本框值(即英语/西班牙语)

我需要获取语言实体的英语/西班牙语记录的GUID


如何获取它?

如果它是插件,您可以使用
服务查询
语言
实体。通过使用
Name=“Spanish”
ie
Name=rawstuent[“Language”]
进行过滤以获取GUID,从而检索多个
。您可以使用fetchxml或QueryExpression

通过传递参数调用上述可重用方法:(确保根据需要修改架构名称,并参数化
西班牙语
过滤器)

如果是数据导入作业,并且语言是有限的数据,例如两个条目,即。英语和西班牙语,我建议您维护一个
enum
,基本上是一个键:值对,用于内联切换它,而不是查询批处理操作中的每一行

在任何一种情况下,代码都类似于:

studentObj.Language = new EntityReference("Language_entityschemaname", new Guid(languageid));

如果是插件,您可以使用
服务查询
语言
实体。通过使用
Name=“Spanish”
ie
Name=rawstuent[“Language”]
进行过滤,检索多个
,以获取GUID。您可以使用fetchxml或QueryExpression

通过传递参数调用上述可重用方法:(确保根据需要修改架构名称,并参数化
西班牙语
过滤器)

如果是数据导入作业,并且语言是有限的数据,例如两个条目,即。英语和西班牙语,我建议您维护一个
enum
,基本上是一个键:值对,用于内联切换它,而不是查询批处理操作中的每一行

在任何一种情况下,代码都类似于:

studentObj.Language = new EntityReference("Language_entityschemaname", new Guid(languageid));

有后续问题吗?有后续问题吗?
var language = GetEntityCollection(_orgService, "Language_entityschemaname", "new_name", "Spanish", new ColumnSet("languageid", "new_name"));
Guid languageid = (Guid)language[0].Id;
studentObj.Language = new EntityReference("Language_entityschemaname", new Guid(languageid));