【问题标题】:Salesforce: What is the DMLOptions field in the sObject class?Salesforce:sObject 类中的 DMLOptions 字段是什么?
【发布时间】:2021-01-26 22:35:29
【问题描述】:

我正在尝试序列化一个 sObject,以通过 SOAP API 从 C# 应用程序传递到 Salesforce,并设置其 DML 选项字段。我需要(在一定程度上)在 C# 中重新创建 sObject 类。有谁知道 DMLOptions 字段的名称?我找不到它的文档。

【问题讨论】:

标签: c# api soap salesforce


【解决方案1】:

您不会在 SOAP API 中那样做。没错,在 Apex 中,它们可以是单个 sObject 的属性。但它们不是真实的。我认为它们不能被(反)序列化,它们只有在您即将进行的下一个 DML 操作之前才有意义。事实上,如果您插入一个 sObject 列表,通常将它们作为 Database.insert(myList, options); 传递更有意义

在 SOAP API 中,它们比单个插入更接近 Apex 批量插入;它们是操作的属性,而不是对象,因此它们在消息头中传递。因此,如果您确实需要,您的 C# 实现可以为它们创建一个字段,但是您必须以某种方式解压缩它并在构造实际 XML 时传入标头。

我不明白你为什么要手动做。为什么不直接让 SF 管理员在 Setup -> API 中为您生成一个 WSDL 文件并使用它?

WSDL 应该包含这样的部分:

<operation name="create">
<soap:operation soapAction=""/>
<input>
<soap:header use="literal" message="tns:Header" part="SessionHeader"/>
<soap:header use="literal" message="tns:Header" part="AssignmentRuleHeader"/>
<soap:header use="literal" message="tns:Header" part="MruHeader"/>
<soap:header use="literal" message="tns:Header" part="AllowFieldTruncationHeader"/>
<soap:header use="literal" message="tns:Header" part="DisableFeedTrackingHeader"/>
<soap:header use="literal" message="tns:Header" part="StreamingEnabledHeader"/>
<soap:header use="literal" message="tns:Header" part="AllOrNoneHeader"/>
<soap:header use="literal" message="tns:Header" part="DuplicateRuleHeader"/>
<soap:header use="literal" message="tns:Header" part="LocaleOptions"/>
<soap:header use="literal" message="tns:Header" part="DebuggingHeader"/>
<soap:header use="literal" message="tns:Header" part="PackageVersionHeader"/>
<soap:header use="literal" message="tns:Header" part="EmailHeader"/>
<soap:body parts="parameters" use="literal"/>
</input>
<output>
<soap:header use="literal" message="tns:Header" part="DebuggingInfo"/>
<soap:header use="literal" message="tns:Header" part="LimitInfoHeader"/>
<soap:body use="literal"/>
</output>

这是你的提示。使用 AllOrNoneHeader, AllowFieldTruncationHeader, AssignmentRuleHeader, EmailHeader, LocaleOptions headers 复制功能。

查看https://developer.salesforce.com/blogs/developer-relations/2015/06/salesforce-soap-api-sample-wsdls.html 了解更多信息(搜索带有“AllOrNoneHeader 提供提交或回滚控制权”的部分)

【讨论】:

  • 我想知道的是联系人上是否有一些隐藏字段包含 DMLOptions。我在 C# 中创建了 DMLOptions 类(包括您提到的其他类)。这是我无法找到的拼图的缺失部分(即使在 WSDL 中)。我猜B计划是在创建或更新函数的参数中发送对象。
  • 不,没有隐藏字段。不,SOAP API 中没有 Apex 的 setOptions 的一对一等效项。我很难理解你想做什么。您必须在标题中传递它们,与实际数据分开,期间?如果您尝试在记录的 XML 中注入奇怪的参数 - SF 将有权忽略它或拒绝该消息。毕竟它不会遵循 WSDL 中规定的规范。
猜你喜欢
  • 2019-12-27
  • 2012-05-04
  • 2011-02-18
  • 2018-12-25
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 1970-01-01
  • 2018-11-23
相关资源
最近更新 更多