使用OData在Dynamics CRM中检索多个Enitiies

时间:2015-12-17 16:16:25

标签: javascript dynamics-crm

我有一个功能区按钮命令,它执行一个javascript函数并传入网格中的选定行。我循环遍历该列表以创建$ select过滤器以生成RetrieveMultiple请求。 问题是我每次收到以下错误

400:错误请求:在位置1的“Microsoft.Xrm.Sdk.Entity”类型中不存在属性“id”

我尝试使用id代替Id,但我仍然遇到同样的错误。 我的代码在

之下
function approveMultipleApplications(selectedApplicationReferences) {
    if (selectedApplicationReferences && selectedApplicationReferences.length > 0) {
        var filter = '';
        for (var i = 0; i < selectedApplicationReferences.length; i++) {
            filter += '(id eq guid\'' + selectedApplicationReferences[i].Id + '\')';
            if (i < selectedApplicationReferences.length - 1) {
                filter += ' or ';
            }
        }

        var options = "$select=new_assessmentcount,new_requiredassessmentcount&$filter=" + filter;
        try {
            SDK.REST.retrieveMultipleRecords("new_application", options, retrieveApplicationsCallBack, function (error) {
                alert(error.message);
            }, retrieveComplete);
        }
        catch (ex) {
            Xrm.Utility.alertDialog('Something went wrong, please try again or contact your administrator ' + ex, null);
        }
    }
    else {
        Xrm.Utility.alertDialog('You must select at least one application to approve', null);
    }
}

selectedApplicationReferences [i] .Id的格式为{guid-value} 任何帮助或指导表示赞赏

1 个答案:

答案 0 :(得分:4)

错误消息非常明显:使用 LogicalNameId 而不仅仅是 Id 。在您的情况下, new_applicationId

filter += '(new_applicationId eq guid\'' + selectedApplicationReferences[i].Id + '\')';

由于数据库中实际上没有 Id -field,因此可能有点令人困惑。如果您使用例如早期绑定类, Id 字段在幕后为您设置,因此可能会让您感到困惑。 OData端点不返回 Id 字段。