-
Notifications
You must be signed in to change notification settings - Fork 54
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Hi,
Unfortunately when trying to delete a record using alternate key I receive the following exception.
My code snippet
var request = new DeleteRequest
{
Target = new EntityReference(Account.EntityLogicalName)
{
KeyAttributes = new KeyAttributeCollection
{
{ Account.LogicalNames.MyAlternateKey, key}
}
}
};
_context.Execute(request); /* OrganizationServiceContext */
Exception
Microsoft.PowerPlatform.Dataverse.Client.Utils.DataverseOperationException: Entity Reference cannot have Id and Key Attributes empty.
---> Microsoft.Rest.HttpOperationException: Operation returned an invalid status code 'BadRequest'
at Microsoft.PowerPlatform.Dataverse.Client.ConnectionService.ExecuteHttpRequestAsync(String uri, HttpMethod method, String body, Dictionary`2 customHeaders, CancellationToken cancellationToken, DataverseTraceLogger logSink, Nullable`1 requestTrackingId, String contentType, Nullable`1 sessionTrackingId, HttpClient providedHttpClient)
at Microsoft.PowerPlatform.Dataverse.Client.ConnectionService.Command_WebExecuteAsync(String queryString, String body, HttpMethod method, Dictionary`2 customHeaders, String contentType, String errorStringCheck, Guid callerId, Boolean disableConnectionLocking, Int32 maxRetryCount, TimeSpan retryPauseTime, Uri uriOfInstance, Guid requestTrackingId, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.PowerPlatform.Dataverse.Client.ServiceClient.Execute(OrganizationRequest request)
at Microsoft.Xrm.Sdk.Client.OrganizationServiceContext.Execute(OrganizationRequest request)
I investigated further and have found the root cause of this issue here:
PowerPlatform-DataverseServiceClient/src/GeneralTools/DataverseClient/Client/ConnectionService.cs
Lines 1582 to 1585 in e365070
else if (req.Parameters.ContainsKey("Target") && req.Parameters["Target"] is EntityReference entRef) // this should cover things that have targets. | |
{ | |
cReq = new Entity(entRef.LogicalName, entRef.Id); | |
} |
As you can see the problem is that the KeyAttributes
won't get evaluated when the Target
parameter is of type EntityReference
and so the request url will be invalid: accounts(00000000-0000-0000-0000-000000000000)
Let me know if I should provide a fix via PR. Thanks in advance!
SimonFindling
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working