特定のレコードの特定のバージョンを復元しようとしています。
問題のエンティティの監査がオンになっています。私のプログラムは、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 ループを作成し、レコードの属性を古い属性に設定する必要がありますか?