如何在 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)。
所以,看来我必须选择使用:
- 使用
context.Create()
、context.Update()
、context.Where(...)
、et.c。 或
- 使用
context.Execute(multiple)
和context.RetrieveMultiple()
似乎没有中间立场,因为当我使用 ExecuteMultipleRequest
时,上下文似乎不会更新它正在跟踪的实体。这是我的基本问题。我可以很好地创建对象,但是如果我想查询它们,我不能在上下文中使用 linq 查询,我必须使用 RetrieveMultiple
.
我是不是搞反了,或者这在使用 CRM 时是众所周知的?我是一位经验丰富的开发人员,但对 CRM 比较陌生。
在使用 ExecuteMultipleRequest
时,我是否必须为所有新创建的实体调用 context.AttachObject()
自己?
如有任何帮助,我们将不胜感激。哦,我正在使用早期绑定对象。
我认为 CrmLinqProvider 没有扩展来处理您的实例。 ExecuteMultipleRequest returns 一个包含每个请求结果的ExecuteMultipleResponse 对象。您需要循环遍历以确定 ID,并自行更新它们。
所以,我正在使用 CRM 2011。为了提高性能,我开始使用 ExecuteMultipleRequest。一次创建多条记录时效果很好。伟大的!我遇到的问题是,在我完成
context.Execute(myMultipleRequest);
并得到一个有效的回复,如果我再做一个
context.myEntitiesSet.Where(x => x.Name == "foo")
(基本上是查询刚刚创建的对象)我没有得到有效的对象,这意味着它们的 ID 是空的 (Guid.Empty)。
所以,看来我必须选择使用:
- 使用
context.Create()
、context.Update()
、context.Where(...)
、et.c。 或 - 使用
context.Execute(multiple)
和context.RetrieveMultiple()
似乎没有中间立场,因为当我使用 ExecuteMultipleRequest
时,上下文似乎不会更新它正在跟踪的实体。这是我的基本问题。我可以很好地创建对象,但是如果我想查询它们,我不能在上下文中使用 linq 查询,我必须使用 RetrieveMultiple
.
我是不是搞反了,或者这在使用 CRM 时是众所周知的?我是一位经验丰富的开发人员,但对 CRM 比较陌生。
在使用 ExecuteMultipleRequest
时,我是否必须为所有新创建的实体调用 context.AttachObject()
自己?
如有任何帮助,我们将不胜感激。哦,我正在使用早期绑定对象。
我认为 CrmLinqProvider 没有扩展来处理您的实例。 ExecuteMultipleRequest returns 一个包含每个请求结果的ExecuteMultipleResponse 对象。您需要循环遍历以确定 ID,并自行更新它们。