Skip to content

Unable to delete record using alternate key #205

@LarsBauer

Description

@LarsBauer

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:

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions