首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用C#更新CRM4.0中实体的性能

使用C#更新CRM4.0中实体的性能
EN

Stack Overflow用户
提问于 2012-05-02 12:35:05
回答 1查看 959关注 0票数 0

我有一个大规模更新应用程序,通过基于某种逻辑更新某些实体的字段来更新特定实体的记录。我使用TargetUpdate进行记录更新,因为我将一个工作流附加到我不想触发的实体的更新(万一我使用了正常的更新)。但更新这些记录需要很长时间。目前,更新1K记录大约需要1.5小时。在实际情况下,它需要在每天最多5-6小时的时间内更新大约10K记录(夜间作业)。有什么办法可以提高我的表现吗?

代码语言:javascript
复制
Centity newentityobect;

newentityobect= new Centity()
{
    asp_field1 = new Key()
    {
        Value = new Guid(field1Value)
    },
    asp_field2 = field2Value,
    asp_field3 = field3Value,
    asp_field3 = field4Value
};

TargetUpdateCentity objx = new TargetUpdateCentity();
objx.Centity = newentityobect;
UpdateRequest updateCentity = new UpdateRequest();
updateCentity.Target = objx;
UpdateResponse updatedCentity = (UpdateResponse)crmUpdateObject.Execute(updateCentity);

上面是我用来更新记录的一个小代码片段。

EN

回答 1

Stack Overflow用户

发布于 2012-05-02 14:49:13

因为我的解释太长了,所以我会把它作为答复发出去。

我知道多线程涉及更多的思考/问题/风险,但您看到的是一个响应太慢的服务调用。

如果你想加快速度,有四种可能性:

  • 立即执行多个服务调用(多线程)
  • ,编辑服务调用(我认为这是一个基本的服务调用)
  • 使用不同的服务调用(我怀疑它是否存在,但是如果使用大量更新会增加您的
  • 服务和直接编辑数据库(我非常怀疑crm支持这一点,因此考虑它是一个黑客,但是您直接更新数据库的速度可能会大大提高)。

假设没有批量更新的服务调用,并且无法编辑服务,则可以采用多线程方式,也可以直接访问数据库。

鉴于这两个选择,我将明确选择多线程方法,这将是一个更安全的方法,然后黑客进入数据库。

从.NET 4.0开始,您可以轻松地在列表上启用多线程,如下所示:

代码语言:javascript
复制
Parallel.ForEach(entityList, entity => {
   //copy paste your looped code here
});

你可以编辑你的代码,看看最终结果是不是你太喜欢了,如果不是:欢迎来到crm,上帝的速度!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10413864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档