【问题标题】:Jaydata web api with OData provider -- provider fallback failed errorJaydata web api 与 OData 提供者——提供者回退失败错误
【发布时间】:2014-03-31 00:20:43
【问题描述】:

我正在使用 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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 这是否适用于 web api?我注意到您正在引用 Odata 并且主机路径是 /api/students 这似乎表示 web api 而不是 Odata。 Odata 配置是否可互换?此配置可以用于 Odata 和 WebAPI 吗?
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2019-12-02
      • 2019-12-01
      • 2022-10-20
      • 2017-10-19
      相关资源
      最近更新 更多