我们的系统从我们想要将记录(例如联系人,帐户,机会等)推送到SalesForce。
为实现这一目标,我们使用了ForceToolKit for .Net。 我们可以使用ForceToolKit函数成功插入\更新记录。
示例:
dynamic contact = new ExpandoObject();
contact.FirstName = "FirstName";
contact.LastName = "Last";
contact.Email = "test@test.com";
contact.MobilePhone = "1234567890";
var successResponse = await forceClient.CreateAsync("Contact", contactList);
我们面临的问题如下所述。
在我们的源系统中,我们几乎没有自定义字段,这些字段在SalesForce中不是标准字段,对于不同的用户可能有所不同。
因此,首先我们必须在源系统和SalesForce之间映射自定义字段。
我们想要获取SalesForce对象的所有字段以映射字段。
我们无法在ForceToolkitForNet中找到任何功能。
正如here所述,我们使用dynamic
返回类型尝试了QueryById函数,但它抛出异常。
var contactFields = await forceClient.QueryByIdAsync<dynamic>("Contact", successResponse.Id);
例外: "SELECT FROM Contact where Id = '{contactId}' Incorrect syntax near FROM".
获取SalesForce的任何对象字段的方法有哪些。 任何人都可以使用SalesForceToolkit或SalesForceApi来帮助我们获取对象的字段吗?
答案 0 :(得分:3)
SOQL没有SELECT * FROM Account
概念,您需要事先了解这些字段。你在这里几乎没有选择。
您可以使用&#34;描述&#34;调用。我最近回答了类似的问题,但它是关于REST API:https://stackoverflow.com/a/48436870/313628,我认为您的解决方案是基于SOAP的。
如果你手动这样做......
当您使用工具包时 - 这些方法已经存在于某处。实验一下。在我给你的链接下的C#例子和库之间,你应该能够找到一些东西。
我的意思是我很天真但只是在搜索回购中&#34;描述&#34;看起来很有希望:https://github.com/developerforce/Force.com-Toolkit-for-NET/search?utf8=%E2%9C%93&q=describe&type=,也许是this example
还有一种方法是不在运行时学习这些信息,而是使用Salesforce生成的WSDL文件,包含所有字段&amp;从中生成C#代码。缺点是,每次要在应用程序中支持新的对象/字段时,您都需要重新生成它。阅读&#34;企业WSDL&#34;开始。
最后但并非最不重要 - 有多少或多或少的友好工具可以转储Salesforce元数据。我是https://www.datasert.com/products/realforce/的粉丝,但只是环顾四周。地狱,甚至用DataLoader导出一些记录都会给你所有的字段名称,如果你需要的话。