アプリケーションとデータベースのコンテキストを最も単純なものにまで落とし込みました。マップとマーカーの 2 つのテーブルがあります。各マップには多数のマーカーが存在します。既存のマップでは、新しいマーカーを挿入できないようです。デフォルトのエラー コールバックを取得しています。
jaydata.js をトレースすると、関数の SqLiteProvider.js ファイルでエラーが発生しexec
ます。これは SQL の失敗であり、(主キーが設定された) マップをテーブルに挿入しようとしていますが、失敗しています。私は何を間違っていますか?
私のコンテキスト:
$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);
});
});