我正在开发一个带有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
任何想法,我如何摆脱此错误?
根据建议的解决方案,我尝试将密钥从必需更改为计算。但可悲的是,它仍然给出同样的错误。修改后的代码如下。
$(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 提供程序相同的代码并且它正常工作。
该问题是由值oDataServiceHost
参数引起的。应使用服务主机(而不是服务的特定集合)配置它。我不知道提供程序名称是否区分大小写,但"oData"是 100% 确定的。
对于 WebAPI + OData 终结点,配置应如下所示:
var context = new $org.types.OrgContext({
name: 'oData',
oDataServiceHost: '/odata'
});