我已经将我的应用程序和数据库上下文剥离到最简单的部分。我有两张桌子,地图和标记。每张地图都存在许多标记。使用现有的地图,我似乎无法插入新的标记;我得到了默认的错误回调。
跟踪 jaydata.js,我在exec
函数中的 SqLiteProvider.js 文件中遇到错误。这是一个 SQL 失败,正在尝试将 Map(带有主键集)插入到表中,但失败了。我究竟做错了什么?
我的背景:
$data.Entity.extend("$org.types.Marker", {
Id: { type: "int", key: true, computed: true },
Left: { type: "int", required: true },
Top: { type: "int", required: true },
Color: { type: "string", required: true },
Name: { type: "string", required: true },
Map: { type: "$org.types.Map", inverseProperty: "Markers" }
});
$data.Entity.extend("$org.types.Map", {
Id: { type: "int", key: true, computed: true },
Title: { type: "string", required: true },
Src: { type: "string", required: true },
Height: { type: "int", required: true },
Width: { type: "int", required: true },
Markers: { type: "Array", elementType: "$org.types.Marker", inverseProperty: "Map" }
});
$data.EntityContext.extend("$org.types.OrgContext", {
Maps: { type: $data.EntitySet, elementType: $org.types.Map },
Markers: { type: $data.EntitySet, elementType: $org.types.Marker },
});
var DB = new $org.types.OrgContext({ name: "webSql", databaseName: "Testing"});
我的测试代码:
DB.Maps.single( function (map) { return map.Id == 1; }, {}, function(map) {
var marker = new $org.types.Marker({
Left: 250,
Top: 350,
Color: 'green',
Name: 'Example',
Map: map});
DB.Markers.add(marker);
DB.saveChanges(function() {
alert(marker.Id);
});
});