[英]Managing Transaction for .NET + Salesforce API
我有.NET应用程序,可通过API更新数据库和Salesforce。 我需要更新多个Salesforce对象。
代码看起来像这样
public class Service ....
public void myTransaction(..){
DBConnection dbcon;
SFConnection sfcon;
// DB Begin Transaction
//Update Database tables
//Update SF Objects
// DB End Transaction
}
请帮助我更好地了解如何实现交易。
我知道这是旧的,但参考那些冲浪的人:
就像LaceySnr提示的那样,无法通过API正确进行事务处理(截至2016年)。 但是,有两种方法可以通过API实现类似事务的结果。
要创建自定义REST端点,您将创建使用@RestResource定义的顶点类。 在该类中,您将定义一个用@HttpPost装饰的函数,该函数带有sObjects列表。 在函数中,您将设置一个保存点。
调用此新端点时,如果存在可捕获错误,则可以自行回滚。 否则,Salesforce会在成功完成该功能后自动提交。 换句话说,您不必显式提交事务。 请参阅此文档以创建REST端点 。 和developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_transaction_control.htm用于事务控制(我不能发布两个以上的链接)。
示例顶点:
@RestResource(urlMapping='/myendpoint/*')
global with sharing bool class MyFirstRESTController {
@HttpPost
global static boolean doSomething(List<sObject> objectsToUpdate) {
boolean error = false;
Savepoint sp = Database.setSavepoint();
//do something
//oh no! there was an error
if( error ) {
Database.rollback(sp);
}
return error;
}
}
在该示例中,如果您将所有sObjects发布到/ services / apexrest / myendpoint / doSomething /,则应调用该函数并提供一些事务控制(例如,将对象转换为JSON并发布)。 您需要在对自定义REST端点的调用上使用“ Authorization:Bearer sessionId ”标头。 sessionId可以与从SOAP登录名检索到的sessionId相同(以防您使用wdsl生成服务)。
有关AllOrNone标头,请参阅SOAP API的文档 。 此标头允许您指示如果任何单个记录在更新时失败,则它们都会失败。 实质上,如果一条记录失败,则回滚整个事务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.