繁体   English   中英

如何将数据从 SQL 数据库字段类型(nvarchar)同步到 Dynamics CRM 字段类型(查找)

[英]How to Sync data from SQL database field type(nvarchar) to Dynamics CRM field type (Lookup)

我正在尝试将数据从 SQL Server 同步到 Dynamics CRM。

我在 C# 中创建了一个解决方案/项目。 在同步CRM的一个账户实体的地方,所有的细节,比如姓名,账号,发货日期,电话号码所有这些细节都成功同步,因为表单SQL,数据类型是nvarcharint ,在CRM中它是一行文本。

但是,当我从nvarchar到 CRM 的查找字段执行相同的同步时,它不起作用并且发生了异常。

这里,account 是 CRM 中实体的名称,SalesContact 是 SQL 中的字段名称,数据类型是nvarchar ,ppg_salescontact 是 CRM 中的字段名称,数据类型是查找。

  Entity enAccount = new Entity("account");

 if (!String.IsNullOrEmpty(drRowAccount["SalesContact"] + "")) { enAccount["ppg_salescontact"] = 
 SecurityElement.Escape(drRowAccount["SalesContact"].ToString().Trim()); }

异常:”消息:将属性值转换为属性时出错:属性 [ppg_salescontact],实体 [account] 的属性类型 [lookup] 的值类型为 [System.String]:[System.InvalidCastException:无法转换类型为“System”的对象.String' 输入'Microsoft.Xrm.Sdk.EntityReference'。"

请建议我可以为此做些什么。

您得到的例外说明了一切:您不能将类型为string的值分配给类型为EntityReference的字段。

因此,要根据该string获取EntityReference ,您必须做的是获取您的string值,并根据该值查询 CRM 以获取适当的 CRM 记录。 具体来说,您需要查询ppg_salescontact是要查找的 CRM 实体。

此查询的结果将是派生自Entity的类型,然后您可以将其转换为EntityReference (通过调用ToEntityReference() )。

例如,如果ppg_salescontact是 CRM Contact实体的查找,并且如果drRowAccount["SalesContact"]为您提供联系人的全名,那么您可以按如下方式查询(这是 LINQ 语法):

Contact contact = orgContext
   .ContactSet
   .Where(c => c.FullName == drRowAccount["SalesContact"])
   .FirstOrDefault();
EntityReference contactRef = contact?.ToEntityReference();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM