C# 使用api在Dynamics 365中创建批量删除作业会导致错误,表明该实体不支持同步批量删除

C# 使用api在Dynamics 365中创建批量删除作业会导致错误,表明该实体不支持同步批量删除,c#,dynamics-crm,microsoft-dynamics,C#,Dynamics Crm,Microsoft Dynamics,我正在尝试使用web api在Dynamics 365中创建批量删除作业。作为参考,我使用了以下网页: 我使用的是api版本9.1。 我已经让它的大部分工作,并删除了相当多的验证错误,所以我知道我在正确的轨道上。但是,现在我收到以下错误消息:“实体bookableresourcebooking不支持同步批量删除”。 当我尝试在Dynamics中手动创建相同的批量删除作业时,不会发生错误。 有人能帮我解决这个错误吗? 我正在使用的相关代码: var relativeUrl =

我正在尝试使用web api在Dynamics 365中创建批量删除作业。作为参考,我使用了以下网页:

我使用的是api版本9.1。 我已经让它的大部分工作,并删除了相当多的验证错误,所以我知道我在正确的轨道上。但是,现在我收到以下错误消息:“实体bookableresourcebooking不支持同步批量删除”。 当我尝试在Dynamics中手动创建相同的批量删除作业时,不会发生错误。 有人能帮我解决这个错误吗? 我正在使用的相关代码:

      var relativeUrl = "BulkDelete()";
      var bulkDelete = new BulkDeleteRequest("Delete all future bookings");
      var querySet = new QuerySet();
      querySet.EntityName = "bookableresourcebooking";
      querySet.Distinct = false;
      var conditionStarttimeGreaterEqualToday = new Condition();
      conditionStarttimeGreaterEqualToday.AttributeName = "starttime";
      conditionStarttimeGreaterEqualToday.Operator = "OnOrAfter";
      conditionStarttimeGreaterEqualToday.Values = new List<ValueClass>();
      conditionStarttimeGreaterEqualToday.Values.Add(new ValueClass(new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day).ToUniversalTime().ToString("o"), "System.DateTime"));
      var conditionVoltooidOpEmpty = new Condition();
      conditionVoltooidOpEmpty.AttributeName = "new_voltooidop";
      conditionVoltooidOpEmpty.Operator = "Null";
      conditionVoltooidOpEmpty.Values = new List<ValueClass>();

      querySet.Criteria = new Criteria();
      querySet.Criteria.FilterOperator = "And";
      querySet.Criteria.Conditions.Add(conditionStarttimeGreaterEqualToday);
      querySet.Criteria.Conditions.Add(conditionVoltooidOpEmpty);

      bulkDelete.QuerySet.Add(querySet);
      await _crmClient.PostCRMData(relativeUrl, JsonConvert.SerializeObject(bulkDelete)); //Dependency injected httpclient.
var relativeUrl=“BulkDelete()”;
var bulkDelete=新的BulkDeleteRequest(“删除所有未来预订”);
var querySet=新querySet();
querySet.EntityName=“bookableresourcebooking”;
querySet.Distinct=false;
var conditionstarttimegreatequaltoday=新条件();
ConditionStartTimeCreateRequalToDay.AttributeName=“starttime”;
conditionstarttimegreatequaltoday.Operator=“OnOrAfter”;
ConditionStartTimeCreateQualtoday.Values=新列表();
ConditionStartTimeCreateQualToDay.Values.Add(新的ValueClass(新的DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day).ToUniversalTime().ToString(“o”),“System.DateTime”);
var conditionvoltooidepmpty=新条件();
conditionvoltooidpempty.AttributeName=“new_voltoidop”;
conditionVoltooidPempty.Operator=“Null”;
conditionVoltooidPempty.Values=新列表();
querySet.Criteria=新标准();
querySet.Criteria.FilterOperator=“和”;
querySet.Criteria.Conditions.Add(conditionstarttimegreatequaltoday);
querySet.Criteria.Conditions.Add(conditionvoltooidepmpty);
bulkDelete.QuerySet.Add(QuerySet);
wait_crmClient.postrmdata(relativeUrl、JsonConvert.SerializeObject(bulkDelete))//依赖注入httpclient。
额外信息:

  • bookableresourcebooking是随现场服务提供的标准实体
  • new_voltoidop up是我添加到此实体的自定义日期时间字段

我们必须使此作业异步,为此我们必须通过
RunNow:false
。然后这个错误就会消失

我已经在CRM REST Builder中测试了此工作代码。但这是等效的

var parameters = {};
var queryset1 = {
        EntityName: "account",
        ColumnSet: {
            AllColumns: true
        },
        Distinct: false,
    };

queryset1["@odata.type"] = "Microsoft.Dynamics.CRM.QueryExpression";
parameters.QuerySet = [queryset1];
parameters.JobName = "arun test";
parameters.SendEmailNotification = false;
var torecipients1 = {};
torecipients1.activitypartyid = "00000000-0000-0000-0000-000000000000"; //Delete if creating new record 
torecipients1["@odata.type"] = "Microsoft.Dynamics.CRM.activityparty";
parameters.ToRecipients = [torecipients1];
var ccrecipients1 = {};
ccrecipients1.activitypartyid = "00000000-0000-0000-0000-000000000000"; //Delete if creating new record 
ccrecipients1["@odata.type"] = "Microsoft.Dynamics.CRM.activityparty";
parameters.CCRecipients = [ccrecipients1];
parameters.RecurrencePattern = "FREQ=DAILY;";
parameters.StartDateTime = JSON.stringify(new Date("05/07/2021 13:30:00").toISOString());
parameters.RunNow = false;

var bulkDeleteRequest = {
    QuerySet: parameters.QuerySet,
    JobName: parameters.JobName,
    SendEmailNotification: parameters.SendEmailNotification,
    ToRecipients: parameters.ToRecipients,
    CCRecipients: parameters.CCRecipients,
    RecurrencePattern: parameters.RecurrencePattern,
    StartDateTime: parameters.StartDateTime,
    RunNow: parameters.RunNow,

    getMetadata: function() {
        return {
            boundParameter: null,
            parameterTypes: {
                "QuerySet": {
                    "typeName": "Collection(mscrm.QueryExpression)",
                    "structuralProperty": 4
                },
                "JobName": {
                    "typeName": "Edm.String",
                    "structuralProperty": 1
                },
                "SendEmailNotification": {
                    "typeName": "Edm.Boolean",
                    "structuralProperty": 1
                },
                "ToRecipients": {
                    "typeName": "Collection(mscrm.activityparty)",
                    "structuralProperty": 4
                },
                "CCRecipients": {
                    "typeName": "Collection(mscrm.activityparty)",
                    "structuralProperty": 4
                },
                "RecurrencePattern": {
                    "typeName": "Edm.String",
                    "structuralProperty": 1
                },
                "StartDateTime": {
                    "typeName": "Edm.DateTimeOffset",
                    "structuralProperty": 1
                },
                "RunNow": {
                    "typeName": "Edm.Boolean",
                    "structuralProperty": 1
                }
            },
            operationType: 0,
            operationName: "BulkDelete"
        };
    }
};

Xrm.WebApi.online.execute(bulkDeleteRequest).then(
    function success(result) {
        if (result.ok) {
            var results = JSON.parse(result.responseText);
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);

看起来不支持bookableresourcebooking。看看这个,还有后续问题吗?