Веб-API Jaydata с ошибкой резервного копирования поставщика OData

Я разрабатываю приложение с jaydata, OData и веб-API. Исходный код приведен ниже:

$(document).ready(function () {

        $data.Entity.extend('$org.types.Student', {
            Name: { type: 'Edm.String', nullable: false, required: true, maxLength: 40 },
            Id: { key: true, type: 'Edm.Int32', nullable: false, computed: false, required: true },
            Gender: { type: 'Edm.String', nullable: false, required: true, maxLength: 40 },
            Age: { type: 'Edm.Int32', nullable: false, required: true, maxLength: 40 }
        });

        $data.EntityContext.extend("$org.types.OrgContext", {
            Students: { type: $data.EntitySet, elementType: $org.types.Student },
        });

        var context = new $org.types.OrgContext({ name: 'OData', oDataServiceHost: '/api/students' });

        context.onReady(function () {
            console.log('context initialized.');
        });

    });

В приведенном выше коде JavaScript я определил объект с именем Student. В методе context.onReady() я получаю следующую ошибку:

Provider fallback failed! jaydata.min.js:100

Любая идея, как я могу избавиться от этой ошибки??


person user3360766    schedule 27.02.2014    source источник


Ответы (2)


В соответствии с предложенным решением я попытался изменить ключ с требуемого на вычисляемый. Но, к сожалению, он все еще дает ту же ошибку. Модифицированный код приведен ниже.

$(document).ready(function () {

        $data.Entity.extend('Student', {
            Id: { key: true, type: 'int', computed: true },
            Name: { type: 'string', required: true}
        });

        $data.EntityContext.extend("$org.types.OrgContext", {
            Students: { type: $data.EntitySet, elementType: Student },
        });

        var context = new $org.types.OrgContext({
            name: 'OData',
            oDataServiceHost: '/api/students'
        });

        context.onReady(function () {
            console.log('context initialized.');
        });            
    });

Я думаю, что проблема связана с провайдером Odata, потому что я попробовал тот же код с провайдером indexdb, и он работает правильно.

person user3360766    schedule 28.02.2014
comment
Работает ли это с веб-API как есть? Я заметил, что вы ссылаетесь на Odata, а путь к хосту — /api/students, что, похоже, указывает на веб-API вместо Odata. Является ли конфигурация Odata взаимозаменяемой? Можно ли использовать эту конфигурацию как для Odata, так и для WebAPI? - person Nate; 11.06.2014

Проблема вызвана значением параметра oDataServiceHost. Вы должны настроить его с хостом службы, а не с конкретной коллекцией службы. Я не знаю, чувствительно ли имя провайдера к регистру или нет, но «oData» уверен на 100%.

Для конечных точек WebAPI + OData конфигурация должна выглядеть следующим образом:

var context = new $org.types.OrgContext({
  name: 'oData',
  oDataServiceHost: '/odata'
});
person Robesz    schedule 06.03.2014