语法非常简单,但背景信息更重要,请在重用代码段之前阅读整个答案。
YourType 可以使用该YourType.addMember()
函数使用新字段进行扩展。请参阅此示例片段:
$data.Entity.extend('Product', {
id: { type: 'int', key: true, computed: true },
Name: { type: 'string' }
});
$data.EntityContext.extend('Northwind', {
Products: { type: $data.EntitySet, elementType: Product},
});
Product.addMember('Description', {
type:'string',
key: false,
computed: false,
required: false
});
var context = new Northwind({provider: 'webSql', databaseName: 'Northwind'});
context.onReady(function() {
var product1 = new Product({ Name: 'Beer', Description: 'tasty'});
context.Products.add(product1);
context.saveChanges(function(result) {
//check the content of WebSQL DB
console.log(product1);
});
});
您可以addMember()
在创建上下文实例之前使用唯一的。
重要信息:
库中没有数据迁移/合并,webSql 模式修改的默认行为是删除并重新创建数据库。由于 IndexedDB 未绑定到模式,因此不会删除现有记录。通过运行此代码并添加更多字段来尝试一下,这是一个有效的JSFiddle。
真正的解决方案是使用JayData Pro的Schema Evolution 模块来管理数据模型中的更改。