如何在ExecuteMultipleRequest之后使用Linq获取更新的实体

时间:2015-11-24 20:26:05

标签: c# performance dynamics-crm-2011 dynamics-crm

所以,我正在使用CRM 2011.为了提高性能,我开始使用ExecuteMultipleRequest。一次创建多个记录时,它工作正常。大!我遇到的问题是在我完成

之后
context.Execute(myMultipleRequest);

如果我做了

,则获得id为id的有效回复
context.myEntitiesSet.Where(x => x.Name == "foo")

(基本上查询刚刚创建的对象)我没有得到有效的对象,这意味着他们的id是空的(Guid.Empty)。

所以,似乎我必须选择使用:

  • 使用context.Create()context.Update()context.Where(...)等。
  • 使用context.Execute(multiple)context.RetrieveMultiple()

似乎没有中间立场,因为当我使用ExecuteMultipleRequest时,上下文似乎没有更新它正在跟踪的实体。这是我的基本问题。我可以很好地创建对象,但是如果我想查询它们我不能在上下文中使用linq查询,那么我必须使用RetrieveMultiple

我是否已经倒退,或者在使用CRM时这是众所周知的?我是一名经验丰富的开发人员,但对CRM来说相对较新。

在使用context.AttachObject()时,我是否应该为所有新创建的实体自行致电ExecuteMultipleRequest

任何帮助将不胜感激。哦,我正在使用早期绑定的对象。

1 个答案:

答案 0 :(得分:1)

我不相信CrmLinqProvider已经扩展到处理你的实例。 ExecuteMultipleRequest返回一个ExecuteMultipleResponse对象,该对象包含每个请求的结果。您需要遍历此以确定ID,并自行更新。