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

How to get updated entities with Linq after ExecuteMultipleRequest

所以,我正在使用 CRM 2011。为了提高性能,我开始使用 ExecuteMultipleRequest。一次创建多条记录时效果很好。伟大的!我遇到的问题是,在我完成

context.Execute(myMultipleRequest);

并得到一个有效的回复,如果我再做一个

context.myEntitiesSet.Where(x => x.Name == "foo")

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

所以,看来我必须选择使用:

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

我是不是搞反了,或者这在使用 CRM 时是众所周知的?我是一位经验丰富的开发人员,但对 CRM 比较陌生。

在使用 ExecuteMultipleRequest 时,我是否必须为所有新创建的实体调用 context.AttachObject() 自己?

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

我认为 CrmLinqProvider 没有扩展来处理您的实例。 ExecuteMultipleRequest returns 一个包含每个请求结果的ExecuteMultipleResponse 对象。您需要循环遍历以确定 ID,并自行更新它们。