![](/img/trans.png)
[英]How to insert money data type from SQL server into currency field in crm using c# (latebound)
[英]How to Sync data from SQL database field type(nvarchar) to Dynamics CRM field type (Lookup)
我正在尝试将数据从 SQL Server 同步到 Dynamics CRM。
我在 C# 中创建了一个解决方案/项目。 在同步CRM的一个账户实体的地方,所有的细节,比如姓名,账号,发货日期,电话号码所有这些细节都成功同步,因为表单SQL,数据类型是nvarchar
或int
,在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.