我有一個Dynamics CRM插件,可在創建父機會時創建多個子記錄。該插件註冊爲post-operation
,同步運行。ExecuteMultiple與創建的不同行爲
當我獨立創建的每個子記錄,一切工作正常:
Entity entity = (Entity)context.InputParameters["Target"];
do
{
var revenue = new Entity("new_opportunityrevenue");
revenue["lor_opportunityid"] = new EntityReference("opportunity", entity.Id);
// Create the child record - Works
service.Create(revenue);
currentYear++;
} while (currentYear <= lastYear);
但是,如果我切換到ExecuteMultipleRequest
,我得到一個錯誤,每當它試圖創建記錄Opportunity
ID不存在。這發生在第一個請求上,所以不會發生額外的處理。
Entity entity = (Entity)context.InputParameters["Target"];
var revenueRecords = new List<Entity>();
do
{
var revenue = new Entity("new_opportunityrevenue");
revenue["lor_opportunityid"] = new EntityReference("opportunity", entity.Id);
revenueRecords.Add(revenue);
currentYear++;
} while (currentYear <= lastYear);
// Create the request object
var request = new ExecuteMultipleRequest()
{
Settings = new ExecuteMultipleSettings()
{
ContinueOnError = false,
ReturnResponses = true
},
Requests = new OrganizationRequestCollection()
};
// Add a CreateRequest for each entity to the request collection
foreach(var entity in revenueRecords)
{
var createRequest = new CreateRequest { Target = entity };
request.Requests.Add(createRequest);
}
// Execute all the requests in the collection using a single method call - Fails
// Opportunity With Id = 4ea41651-538e-e711-8118-e0071b6ad141 Does Not Exist
var response = (ExecuteMultipleResponse)service.Execute(request);
爲什麼會調用Create()
多次工作,同時用ExecuteMultipleRequest
失敗調用Execute()
?
編輯
我使用Dynamics CRM Online中(8.2.1.344)。以下是插件跟蹤日誌的視圖,顯示其用作商機ID的值以及創建機會的ID。個別年跟蹤消息只是內存中的對象創建。
CRM的哪個版本(8.0,8.1,...)?另外,請嘗試使用'context.PrimaryEntityId'而不是通過Target來查看是否有任何更改。 – Alex
我們正在使用CRM Online(8.2)。我會嘗試你的建議,看看是否有任何改變。 –
@Alex使用'context.PrimaryEntityId'和'entity.Id'沒有什麼區別。 –