我有一个地图 我想在Salesforce中插入帐户并创建一个新的地图

问题描述 投票:0回答:1

非常感谢您的帮助。

问题陈述

我有一个Map,其中包含Map字符串键和Salesforce帐户,我想插入一个帐户,但是我想为每个帐户创建一个新的地图并使用与键相同的字符串,并将帐户ID作为值。

已尝试

我实际上在地图上进行的迭代得到了要插入数据库的值,然后,如果记录成功插入,我向新地图中添加了值,“ 我在For Loop中插入帐户,这很糟糕练习可能会达到DML限制

Sudo代码

Account acc = new Account(Name ='Test');
Map<String,Id> accMapId = new Map<String,Id>();
Map<String,Account> accMap = new Map<String,Account>();
accMap.put('A13',acc);

for(String accIterate : accMap.keySet()){
    Database.SaveResult rt = Database.insert(accMap.get(accIterate));
    if(rt.isSuccess()){
            accMapId.put(accIterate,rt.id);
    }
}

问题:如何避免在for Loop中插入帐户对象并构建我的accMapId

salesforce apex soql dml
1个回答
0
投票

使用myMap.values()将地图“展平”到一个列表中(在您的情况下为客户列表),插入整个列表。这种拼合只是保留引用,因此将使用生成的记录ID静默更新地图中的原始帐户。

Map<String, Account> accounts = new Map<String, Account>{
    'A13' => new Account(Name ='Test'),
    'B14' => new Account(Name = 'Another')
};
insert accounts.values(); // You can use Database.insert() if you want, it accepts a list too.

Map<String, Id> idsByKey = new Map<String, Id>();
for(String s : accounts.keyset()){
    idsByKey.put(s, accounts.get(s).Id);
}
System.debug(idsByKey);
© www.soinside.com 2019 - 2024. All rights reserved.