ImportXmlWithProgress не обновляет атрибут результата importjob - PullRequest
0 голосов
/ 06 октября 2009

Я попытался написать некоторый код для импорта большой настройки, содержащей более 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. Надеюсь, кто-то использовал его и знает, как заставить его работать.

1 Ответ

0 голосов
/ 07 октября 2009

Я помню, что у меня были проблемы с этим сообщением, я просто не помню точно, в чем проблема. Насколько велик ваш файл импорта? Мы также создали утилиту импорта для импорта наших настроек, и я использую ImportCompressedAllXmlRequest синхронно (без таймаута) в потоке BackgroundWorker. Для большого количества настроек вам, возможно, придется взглянуть на: http://support.microsoft.com/kb/918609. Обычно мы разбиваем наши настройки на несколько небольших импортов, чтобы избежать этого.

Должен ли XPath быть "importexportxml/entities/entity[@result]"?

...