我正在使用C#更新实体记录,说明动态crm 2011中的联系人。在CRM中有大约44,450个联系人处于活动状态但是下面的代码片段只有500个。有人可以让我知道它出了什么问题。
foreach (Entity item in ec.Entities)
{
if (item.Attributes.Contains("expirationdate"))
{
string temp1 = string.Empty;
DateTime date;
date = Convert.ToDateTime(item.Attributes["expirationdate"]);
temp1 = date.Date.ToString("d");
item.Attributes["expirationdate_hidden"] = temp1;
}
service.Update(item);
}
答案 0 :(得分:2)
用以下
替换代码
foreach (Entity item in ec.Entities)
{
if (item.Attributes.Contains("expirationdate"))
{
string temp1 = string.Empty;
DateTime date;
date = Convert.ToDateTime(item.Attributes["expirationdate"]);
temp1 = date.Date.ToString("d");
item.Attributes["expirationdate_hidden"] = temp1;
}
service.Update(item);
}
如果仅迭代500次,则可以是以下原因 在这背后
- 只有在可以同时检索的最大记录时,retrievemultiple才会返回500条记录 在crm设置中,time可以设置为500。
答案 1 :(得分:0)
您可能认为它只会遍历ec.Entities
,因为您会计算包含expirationdate
答案 2 :(得分:0)
用for循环替换foreach,看看是否使用了500多个项目 代码:
for(int i = 0; i < ec.Entities.Length; i++)
{
Entity item = ec.Entities[i];
if (item.Attributes.Contains("expirationdate"))
{
string temp1 = string.Empty;
DateTime date;
date = Convert.ToDateTime(item.Attributes["expirationdate"]);
temp1 = date.Date.ToString("d");
item.Attributes["expirationdate_hidden"] = temp1;
}
service.Update(item);
}
答案 3 :(得分:0)
我相当确定您的实体检索受到限制,但是这样做可以将每批500个分配给一个列表。