我正试图将数据从SQL Server同步到Dynamics CRM。
我用C#创建了一个解决方案/项目。在同步CRM的一个帐户实体时,所有的详细信息,如姓名、帐号、发货日期、电话号码所有这类详细信息都是成功同步的,因为表单SQL中的数据类型是nvarchar
或int
,而在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'。”
请建议我为此做些什么。
您得到的异常说明了一切:您不能将类型为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中,两种不同类型之间的比较是这样进行的: 首先,根据数据类型优先级的规则比较这两种类型的优先级: 优先级较低的数据类型将转换为优先级较高的数据类型 接下来,将优先级较低的类型强制转换为优先级较高的