Я попытался написать некоторый код для импорта большой настройки, содержащей более 50 сущностей. Я использовал статью Microsoft 'ImportXmlWithProgress Message (CrmService) в качестве основы, но не получил ожидаемого результата.
Файл 'job.data' в следующем коде не отличался от исходных данных параметра xml. Так что для меня это означает, что импорт не был успешным. Я импортировал тот же сжатый файл importexportxml с помощью веб-интерфейса Microsoft, и он работал нормально. Поэтому мне интересно, почему мои job.data не обновляются с атрибутами 'результата' для каждой импортируемой сущности.
Ниже приведен мой метод импорта.
private void ImportEntitySchema()
{
const string parameterXml = @"<importexportxml>
<entities>
{0}
</entities>
<nodes/>
<securityroles/>
<settings/>
<workflows/>
</importexportxml>";
var importRequest = new ImportCompressedXmlWithProgressRequest
{
ImportJobId = Guid.NewGuid(),
CompressedCustomizationXml = GetCompressedCustomizationXmlFromEmbeddedResource(),
ParameterXml = string.Format(parameterXml, string.Join("\n", _entitySchemaEntityNames.Select(item => string.Format("<entity>{0}</entity>", item)).ToArray()))
};
try
{
_crmService.Execute(importRequest);
}
catch (Exception e)
{
//Error resulted from import request
}
// Retrieve the results of the import.
XmlNode node;
do
{
Thread.Sleep(2000);
var job = (importjob)_crmService.Retrieve(EntityName.importjob.ToString(), importRequest.ImportJobId, new AllColumns());
var data = new XmlDocument();
data.LoadXml(job.data);
node = data.SelectSingleNode("importexportxml/entities/entity/@result");
} while (node == null);
//code below here never gets executed because the loop continues infinitely
}
Я искал, но не нашел / много [полезных] примеров в сети используемого ImportXmlWithProgress. Надеюсь, кто-то использовал его и знает, как заставить его работать.