SalesForce - 使用 .Net SDK 或 Api 获取对象的所有字段
SalesForce - Get all the fields of an object using .Net SDK or Api
我们有我们想要将记录(例如联系人、帐户、机会等)推送到销售人员的系统。
为此,我们使用了 ForceToolKit for .Net。 我们能够 insert\update 使用 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
return 类型的 QueryById 函数,但它会抛出异常。
var contactFields = await forceClient.QueryByIdAsync<dynamic>("Contact", successResponse.Id);
异常: "SELECT FROM Contact where Id = '{contactId}' Incorrect syntax near FROM".
获取SalesForce任意对象字段的方法有哪些。
谁能帮助我们使用 SalesForceToolkit 或 SalesForceApi 获取对象的字段?
SOQL 没有SELECT * FROM Account
概念,你需要事先了解字段。您在这里几乎没有选择。
您可以使用 "describe" 电话。我最近回答了类似的问题,但它是关于 REST API: ,我认为你的解决方案是基于 SOAP 的。
如果您手动执行此操作...
- 从这里开始:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_list_describe.htm
- 您的用户可见的所有对象列表:describeGlobal()
- 获取一个对象的详细信息(包括字段名称):describeSobject() or more: describeSobjects()
当您使用该工具包时 - 这些方法可能已经存在于某处。试验一下。在我给你的链接下的 C# 示例和库之间,你应该能够找出一些东西。
我的意思是我很天真,但只是在回购中搜索 "describe" 看起来很有希望:https://github.com/developerforce/Force.com-Toolkit-for-NET/search?utf8=%E2%9C%93&q=describe&type=, maybe this example
还有一种方法可以不在运行时学习此信息,而是使用从 Salesforce 生成的包含所有字段的 WSDL 文件并从中生成 C# 代码。缺点是每次您想要在您的应用程序中支持新的 object/field 时都需要重新生成它。阅读 "Enterprise WSDL" 以开始使用。
最后但同样重要的是 - 有或多或少友好的工具可以转储 Salesforce 元数据。我是 https://www.datasert.com/products/realforce/ 的粉丝,但只是四处看看。该死,如果您只需要这些,即使使用 DataLoader 导出一些记录也会为您提供所有字段名称。
我们有我们想要将记录(例如联系人、帐户、机会等)推送到销售人员的系统。
为此,我们使用了 ForceToolKit for .Net。 我们能够 insert\update 使用 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
return 类型的 QueryById 函数,但它会抛出异常。
var contactFields = await forceClient.QueryByIdAsync<dynamic>("Contact", successResponse.Id);
异常: "SELECT FROM Contact where Id = '{contactId}' Incorrect syntax near FROM".
获取SalesForce任意对象字段的方法有哪些。 谁能帮助我们使用 SalesForceToolkit 或 SalesForceApi 获取对象的字段?
SOQL 没有SELECT * FROM Account
概念,你需要事先了解字段。您在这里几乎没有选择。
您可以使用 "describe" 电话。我最近回答了类似的问题,但它是关于 REST API: ,我认为你的解决方案是基于 SOAP 的。
如果您手动执行此操作...
- 从这里开始:https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_list_describe.htm
- 您的用户可见的所有对象列表:describeGlobal()
- 获取一个对象的详细信息(包括字段名称):describeSobject() or more: describeSobjects()
当您使用该工具包时 - 这些方法可能已经存在于某处。试验一下。在我给你的链接下的 C# 示例和库之间,你应该能够找出一些东西。
我的意思是我很天真,但只是在回购中搜索 "describe" 看起来很有希望:https://github.com/developerforce/Force.com-Toolkit-for-NET/search?utf8=%E2%9C%93&q=describe&type=, maybe this example
还有一种方法可以不在运行时学习此信息,而是使用从 Salesforce 生成的包含所有字段的 WSDL 文件并从中生成 C# 代码。缺点是每次您想要在您的应用程序中支持新的 object/field 时都需要重新生成它。阅读 "Enterprise WSDL" 以开始使用。
最后但同样重要的是 - 有或多或少友好的工具可以转储 Salesforce 元数据。我是 https://www.datasert.com/products/realforce/ 的粉丝,但只是四处看看。该死,如果您只需要这些,即使使用 DataLoader 导出一些记录也会为您提供所有字段名称。