“字典中不存在给定的密钥”-但是密钥存在 - c#

我目前正在开发MS Dynamics CRM 2013-插件。
当我尝试将字符串值分配给实体字段的键时,会给我“ keynotfound”异常。

这使我毫无头绪,因为我可以验证密钥是否存在。我提供的密钥也已正确写入,并且数据类型也兼容。

这里是一些额外的信息:

我尝试解决服务器重新启动的问题。没有。
不能进行远程调试。
我将“ retrieved.EntityCollection.Entities [i] [forField]”换成Retrieveed.EntityCollection.Entities [i] [“ new_name”],一切都正常工作(有点明显的意思,但“ new_name”不是我尝试访问的密钥)。
执行停止@“ if(retrieved.EntityCollection.Entities [i] [forField] .ToString()!=”“ &&!overwriteExisting)”

你有个主意要帮我吗?

public void GenerateNumberForEntityCollection(string target)
{
    try
    {
        // variables for number generation
        bool overwriteExisting = (bool)preImageEntity["new_overwriteexisting"];
        int suffixstart = (int)preImageEntity["new_suffixstart"];
        string forField= preImageEntity["new_forfield"].ToString();
        string prefix = preImageEntity["new_prefix"].ToString();
        string postfix = preImageEntity["new_postfix"].ToString();
        string separator = preImageEntity["new_separator"].ToString();

        // Build query to get all the entries
        RetrieveMultipleResponse retrieved;
        int PageNumber = 1;
        string PagingCookie = string.Empty;
        int PageSize = 5000;
        string[] Columns = { forField };
        QueryExpression query = new QueryExpression()
        {
            EntityName = target,
            ColumnSet = new ColumnSet(Columns),
            PageInfo = new PagingInfo()
            {
                PageNumber = 1,
                Count = PageSize
            }
        };

        do
        {
            if (PageNumber != 1)
            {
                query.PageInfo.PageNumber = PageNumber;
                query.PageInfo.PagingCookie = PagingCookie;
            }

            RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest();
            retrieve.Query = query;
            retrieved = (RetrieveMultipleResponse)service.Execute(retrieve);

            // Now that all entities are retrieved, iterate through them to gen. the numbers
            int i = 0;
            foreach (Entity entity in retrieved.EntityCollection.Entities)
            {
                if (retrieved.EntityCollection.Entities[i][forField].ToString() != "" && !overwriteExisting)
                {
                    //continue;
                }
                else
                {
                    retrieved.EntityCollection.Entities[i][forField] = prefix + separator + suffixstart.ToString() + separator + postfix;
                }
                suffixstart++;
                service.Update(retrieved.EntityCollection.Entities[i]);
                i++;
            }
            if (retrieved.EntityCollection.MoreRecords)
            {
                PageNumber++;
                PagingCookie = retrieved.EntityCollection.PagingCookie;
            }
        } while (retrieved.EntityCollection.MoreRecords);
    }
    catch (Exception e)
    {
        tracing.Trace("GenerateNumberForEntityCollection: Failed: {0}", e.ToString());
    }
}

参考方案

在Dynamics CRM中查询数据时,重要的是要知道数据库中具有null值的记录字段不包含在要返回的Attributes实例的Entity集合中。

使用以下结构从EntityAttribute获取值:

var value = retrieved.EntityCollection.Entities[i][forField].ToString();

当属性forField在数据库中已经有一个值时成功,但是当其当前值为null时失败。

因此,从实体获取属性值的首选方法是GetAttributeValue<T>,如下所示:

var value = retrieved.EntityCollection.Entities[i].getAttributeValue<string>(forField);

当属性存在于属性集合中时,此方法返回值,否则返回null

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

如何在JAVA或C#中使用Web服务或REST API在Microsoft Dynamics CRM 2016(版本8)中创建案例? - java

我想使用Web服务在C#或Java中使用Microsoft Dynamics 2018(Ver.8)创建案例。经过大量的谷歌搜索之后,我很幸运,没有或很少有用的资源很少。 Microsoft文档是完全死胡同。以下是我的要求:创建一个案例。更新CASE更有可能关闭CASE。创建联系人。我需要在JAVA或C#中使用Rest API或Web服务执行这些操作。任何帮…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

您如何在列表内部调用一个字符串位置? - python

我一直在做迷宫游戏。我首先决定制作一个迷你教程。游戏开发才刚刚开始,现在我正在尝试使其向上发展。我正在尝试更改PlayerAre变量,但是它不起作用。我试过放在列表内和列表外。maze = ["o","*","*","*","*","*",…