与OData提供商的Jaydata web api - 提供商回退失败错误

时间:2014-02-27 13:59:02

标签: asp.net-mvc asp.net-web-api odata jaydata

我正在使用 jaydata ,OData和web 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

任何想法,我怎么能摆脱这个错误?

2 个答案:

答案 0 :(得分:0)

根据建议的解决方案,我尝试将密钥从需要更改为计算。但遗憾的是它仍然给出同样的错误。修改后的代码如下。

$(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提供程序尝试了相同的代码并且工作正常。

答案 1 :(得分:0)

问题是由值oDataServiceHost参数引起的。您应该使用服务主机配置它,而不是使用特定的服务集合。我不知道提供者名称是否区分大小写,但“oData”是100%肯定的。

对于WebAPI + OData端点,配置应如下所示:

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