Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ImportXmlWithProgress未更新importjob的结果属性_C#_Xml_Import_Dynamics Crm_Dynamics Crm 4 - Fatal编程技术网

C# ImportXmlWithProgress未更新importjob的结果属性

C# ImportXmlWithProgress未更新importjob的结果属性,c#,xml,import,dynamics-crm,dynamics-crm-4,C#,Xml,Import,Dynamics Crm,Dynamics Crm 4,我试图编写一些代码来导入包含50多个实体的大型定制。我使用微软的文章作为基础,但没有得到我期望的结果 以下代码中的“job.data”未从原始参数XML数据更改。因此,这对我来说意味着导入并不成功。我使用MicrosoftWebUI导入了相同的压缩importexportxml,效果很好。所以我想知道为什么我的job.data没有被更新为导入的每个实体的“result”属性 下面是我的导入方法 private void ImportEntitySchema() { const strin

我试图编写一些代码来导入包含50多个实体的大型定制。我使用微软的文章作为基础,但没有得到我期望的结果

以下代码中的“job.data”未从原始参数XML数据更改。因此,这对我来说意味着导入并不成功。我使用MicrosoftWebUI导入了相同的压缩importexportxml,效果很好。所以我想知道为什么我的job.data没有被更新为导入的每个实体的“result”属性

下面是我的导入方法

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
}
private void ImportEntitySchema()
{
常量字符串参数xml=@”
{0}
";
var importRequest=新的ImportCompressedXmlWithProgressRequest
{
ImportJobId=Guid.NewGuid(),
CompressedCustomizationXml=GetCompressedCustomizationXmlFromEmbeddedResource(),
ParameterXml=string.Format(ParameterXml,string.Join(“\n”,entitySchemaEntityNames.Select(item=>string.Format(“{0}”,item)).ToArray())
};
尝试
{
_crmService.Execute(importRequest);
}
捕获(例外e)
{
//导入请求导致错误
}
//检索导入的结果。
XmlNode节点;
做
{
《睡眠》(2000年);
var job=(importjob)\u crmService.Retrieve(EntityName.importjob.ToString()、importRequest.ImportJobId、new AllColumns());
var data=新的XmlDocument();
data.LoadXml(job.data);
node=data.SelectSingleNode(“importexportxml/entities/entity/@result”);
}while(node==null);
//下面的代码永远不会执行,因为循环会无限继续
}

我一直在寻找,但在使用ImportXmlWithProgress的网络上没有发现任何/许多[有用的]示例。希望有人使用过它,并且知道如何让它工作。

我记得这条消息有问题,我只是不记得到底是什么问题。你的导入文件有多大?我们还编写了一个导入实用程序来导入我们的定制,我在
BackgroundWorker
线程上同步使用
ImportCompressedAllXmlRequest
。对于大量定制,您可能必须查看:。为了避免这种情况,我们通常会将我们的定制划分为一系列小的导入


XPath是否应该是“importexportxml/entities/entity[@result]”?

压缩的导入文件本身只有1.5兆。目前,我们使用CRM Web UI导入了大约10-20个实体。不是我们的理想,也不是最终的解决方案。XPath不是问题所在,因为在调试期间,我没有观察到“job.data”中的数据有任何更改。我也读过那篇文章,并尝试将其作为解决方案。使用ImportCompressedAllXmlRequest,是否有方法监视进度或失败?考虑到这种导入可能需要10-20分钟?如何知道是否已正确导入所有实体?ImportCompressedAllXmlRequest请求不提供任何进度,是全部还是全部。所有内容都在事务中,因此任何失败都会导致所有内容回滚。除此之外,我不知道该提出什么建议。我希望我熟悉的一件事能帮你。