当前位置: 首页 > 知识库问答 >
问题:

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

弓举
2023-03-14

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

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

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

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

  Entity enAccount = new Entity("account");

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

异常:“消息:将属性值转换为属性时出错:属性[ppg_salescontact],属性类型[lookup]的实体[account]的值类型为[system.string]:[system.invalidCastException:无法将类型为'system.string'的对象转换为类型为'microsoft.xrm.sdk.entityReference'。”

请建议我为此做些什么。

共有1个答案

柏阳炎
2023-03-14

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

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

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

例如,如果ppg_salescontact是CRMcontact实体的查找,并且drrowaccount[“salescontact”]给出了联系人的全名,那么您可以按以下方式查询它(这是LINQ语法):

Contact contact = orgContext
   .ContactSet
   .Where(c => c.FullName == drRowAccount["SalesContact"])
   .FirstOrDefault();
EntityReference contactRef = contact?.ToEntityReference();
 类似资料:
  • 请帮助解决此错误... 因为我在该对象上使用了bigdecimal类型,而没有添加一个操作@字段(type=FieldType.Double) 有没有办法配置默认的FieldType。大十进制加倍?或者我们需要在每个大十进制中添加字段注释

  • 问题内容: 我需要将网址存储在MySQL表中。定义将包含长度不确定的URL的字段的最佳实践是什么? 问题答案: 流行的Web浏览器中最小的公分母最大URL长度: 2,083 (Internet Explorer) http://dev.mysql.com/doc/refman/5.0/en/char.html VARCHAR列中的值是可变长度的字符串。 在MySQL 5.0.3之前,长度可以指定为

  • 字段的datatype可以从Nvarchar更改为int吗?? 这个有效吗??如果不能,可以用其他方法吗??

  • 是否可以重载一个字段类型成为另一个字段类型? 如果是,是否可以提供一些例子?

  • 问题内容: 我正在执行以下操作: 返回以下内容: 我只想知道此字段是“ URLField”。如何从此输出中提取出来? 注意:我这样做是为了对字段进行验证。例如,如果是url,我想检查它是否格式正确。 问题答案: 如果你这样做: 结果你可能无法获得。 相反,你正在这样做: 其中,作为解释在这里,不调用该方法,它只是指的是方法绑定方法的对象。返回值不是该绑定方法对象的一部分,它是在调用方法时由方法创建

  • 问题内容: 我有以下存储过程,没有编写完整的存储过程,但其中一些是: 我想知道何时我将@course转换为VARCHAR类型,而数据库中的我是INT类型-比较如何进行? 问题答案: 在SQL Server中,两种不同类型之间的比较是这样进行的: 首先,根据数据类型优先级的规则比较这两种类型的优先级: 优先级较低的数据类型将转换为优先级较高的数据类型 接下来,将优先级较低的类型强制转换为优先级较高的