Вставить в родительский и дочерний пользовательский объект с помощью внешнего идентификатора - PullRequest
1 голос
/ 02 февраля 2020

Я пытаюсь вставить запись в дочерний пользовательский объект, используя внешний идентификатор родительского пользовательского объекта. Мне почти ясно, как настроить внешнее поле идентификатора в родительском объекте, но я очень запутался, как настроить внешний ключ в моем дочернем объекте. Я прилагаю фотографии, на которых есть детали основных и дочерних пользовательских объектов. Что я должен добавить к дочернему пользовательскому объекту, чтобы связать его записи с родительским объектом.

Также вот код, который я получил из другого поста в stackoverflow, но в моем случае это не сработало

enter image description heresumchans__City_Master__c city = new sumchans__City_Master__c(Name='[![enter image description here][1]][1]Vancouver',sumchans__PROVINCE__c = 'BC', sumchans__City_Name_Ext_Id__c = 'Vancouver');
insert city;
sumchans__City_Stat__c cityStat = new sumchans__City_Stat__c(Name = 'Vancouver', sumchans__ON_BILLINGS__c = 50, sumchans__City_Master__c=new sumchans__City_Master__c(sumchans__City_Name_Ext_Id__c='Vancouver'));
insert cityStat;

enter image description here

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Ext. Идентификаторы предназначены для использования в интеграциях, загрузчик данных ... Их можно использовать и в Apex, но синтаксис выглядит немного забавно. Используйте их в Apex, если вы хотите сэкономить на запросах или хотите go "Уважаемые сотрудники отдела продаж, я не помню, сохранил ли я этот объект уже, я знаю, что уникальный идентификатор равен 123, go выясните, нужно ли ему вставлять или обновить ".

Если вы вставляете родителя и потомка в одну и ту же транзакцию - просто используйте идентификатор, сгенерированный в родительской записи. Если они разделены, какое-то время go вы сделали это:

insert new sumchans__City_Master__c city = new sumchans__City_Master__c(Name=Vancouver',
    sumchans__PROVINCE__c = 'BC',
    sumchans__City_Name_Ext_Id__c = 'Vancouver'
);

Затем в другой транзакции вы можете сделать это без запроса:

sumchans__City_Stat__c cityStat = new sumchans__City_Stat__c(Name = 'Vancouver', 
    sumchans__ON_BILLINGS__c = 50, 
    sumchans__City_Master__r = new sumchans__City_Master__c(
         sumchans__City_Name_Ext_Id__c='Vancouver'
    )
);
insert cityStat;

Обратите внимание, что я использовал __r вместо __c. __c будет вашим реальным внешним ключом, полем Id, 15 или 18 символов. __r будет ссылкой на другой объект (например, с ext. Id или результатом запроса), аналогично записи SELECT FirstName, Email, Account.Name FROM Contact.

В Apex это должно быть как ссылка на объект (так что запрос или обманывать с ключевым словом new, просто чтобы создать его в памяти. На самом деле вы не сохраните этот «родитель»). В таких вещах, как загрузчик данных, вы можете отображать значения немного как myCsvExtIdColumn -> sumchans__City_Master__r.sumchans__City_Name_Ext_Id__c

1 голос
/ 02 февраля 2020

Создайте поле поиска . Потому что Внешний идентификатор поле используется для ссылки на идентификатор из другой внешней системы.

Если вы хотите связать внешний ключ с реляционной СУБД, вам нужно создать поле типа lookup Relations в дочернем объекте. Там вам нужно назначить родительский объект в поле Related To .

...