Я пытаюсь восстановить определенную версию для некоторых данных.Как восстановить определенную версию записи
Аудит включен объектами, о которых идет речь. Моя программа должна выбрать определенную версию из записи crm и отменить все свойства и изменения, сделанные для восстановления старой версии записи.
Это в основном для того, чтобы обратить вспять некоторые изменения, которые произошли случайно на продуктивной системе. Я использую Xrm для доступа к серверу.
Также я попытался найти некоторые связанные функции на объекте Xrm или наборе данных xrm, но не нашел их.
До сих пор я нашел способ получить историю версий данной записи:
var xrm = new XrmServiceContext(CrmHelper.GetCrmConnection(ConfigurationManager.ConnectionStrings["Xrm"] + "SG"));
var changeRequest = new RetrieveRecordChangeHistoryRequest();
changeRequest.Target = new EntityReference("account", new Guid("{D4E0990C-41C8-E211-B824-005056997F7A}"));
var changeResponse = (RetrieveRecordChangeHistoryResponse)xrm.Execute(changeRequest);
var details = changeResponse.AuditDetailCollection;
for (int i = 0; i < details.Count; i++)
{
if (typeof (AttributeAuditDetail).Name == details[i].GetType().Name)
{
AttributeAuditDetail detail = details[i] as AttributeAuditDetail;
Entity entity = detail.OldValue;
}
}
Однако, как я могу убрать изменения обратно в detail.OldValue
? Должен ли я сделать цикл foreach над каждым атрибутом и установить атрибут записи на старые?
Я редактировал, записывал, а не сущность –
@GuidoPreite (или любые другие редакторы) Пожалуйста, не меняйте Entity для записи !!! В crm то, что вы называете записью, определяется как сущность, а также класс, чтобы сделать экземпляр того, что вы называете «записью», называется сущностью. Это то же самое, что вы вызываете запись ListItem в Sharepoint, а не записываете ... – RononDex
Позвольте мне пояснить: внутри Dynamics CRM 'Entity' - это определенная структура, состоящая из полей (например, Account и ее атрибутов Name, Address, ...), а 'Record' - это экземпляр« Entity »(например, компания A с адресом 110 West Street). «Аудит» регистрирует изменения на уровне «Запись» (так что изменения данных) не на уровне «Entity» (например, добавлено настраиваемое поле или поле «Адреса» было расширено от 100 до 200 символов). Теперь, если вы хотите вернуть случайные изменения, сделанные на уровне «Запись», вы не поняли мое редактирование, если вы хотите отменить изменения, сделанные на уровне «Entity», вы не поняли «Аудит» –