При клонировании / копировании дочерних записей я использую foreach l oop, а затем создаю запись со всеми ее атрибутами. Я написал подобный код в другом проекте и работал нормально для меня.
Есть несколько статей / вопросов, основанных на одной и той же ошибке. Теперь моя проблема в том, как мне создать дочерние записи со всеми его атрибутами.
foreach (var packingList in oPEntityCollection.Entities)
{
packingList.Attributes.Remove("statuscode");
packingList.Attributes.Remove("statecode");
packingList.Id=Guid.Empty;
orgService.Create(packingList);
}
Другая странная проблема
Запись с таким же ключом уже существует
Код:
Entity parentEntity = orgService.Retrieve(context.PrimaryEntityName, context.PrimaryEntityId, new ColumnSet(true));
parentEntity.Id = Guid.empty;
orgService.Create(parentEntity);
Даже если я создаю новый объект и копирую parentEntity
, как показано ниже, я получаю эту ошибку.
Entity costcalEntity = new Entity();
costcalEntity = parentEntity;
costcalEntity.Id = Guid.Empty;
orgService.Create(costcalEntity);
Так что я в итоге создаю запись с основным именем и после создания записи, я обновляю ту же запись со старыми атрибутами записи.
Entity costcalEntity = new Entity();
costcalEntity.LogicalName = parentEntity.LogicalName;
costcalEntity["name"] = parentQuotationEntity.GetAttributeValue<string>("name");
costcalEntity.Id = Guid.Empty;
Guid newGuid = orgService.Create(costcalEntity);
if (newGuid != Guid.Empty)
{
costcalEntity = parentEntity;
costcalEntity.Id = newGuid;
orgService.Update(costcalEntity);
}
, и это прекрасно работает.