我正在使用jaydata + sqlite管理离线数据库。在jaydata中,nvarchar(20)不是有效的数据类型,因此我需要使用'String'作为数据类型。在线数据库使用的数据类型为nvarchar(20)。
现在,我的问题是:是否可以映射离线数据库和在线数据库,因为'nvarchar(20)'是在线数据库上的数据类型,而'string'是离线数据库上的数据类型'?
这是我应该在我的在线数据库中创建的:
这是我使用jaydata + sqlite在脱机数据库中创建的:
// Table definition of user
$data.Entity.extend("user", {
'UserId' : { key:true,type:'int',nullable:false,required:true },
'Username' : { type:'string',nullable:false,required:true },
'Password' : { type:'string',nullable:false,required:true},
'UserType' : { type:'string',nullable:false,required:true},
'CreatorId' : { type:'int',nullable:false,required:true},
'CreatedAt' : { type:'datetime',nullable:true},
'ModifierId' : { type:'int',nullable:true},
'ModidiedAt' : { type:'datetime',nullable:true},
'IsDeleted' : { type:'boolean',nullable:false,required:true}
});
免责声明:我是JayData的创建者之一
您可以使用在线模式来创建离线数据库。NVarchar(20)甚至不是OData类型-因此我想它只是带有maxLength = 20修饰符的'Edm.String'。但是,Edm.String在JavaScript中映射为类型“ String”。
共享您的架构定义也将有助于我给出更好的答案。
已编辑
以下架构定义将与在线端点(由odata或REST提供)一起使用,并且还将在本地创建相同的表定义。
$data.Entity.extend("user", {
'userid' : { key:true,type:'string', maxLength:216,required:true },
'username' : { type:'string',maxLength:216, required:true },
'password' : { type:'string',maxLength:64,required:true},
....
});
这是您所需要的吗?请注意,在JS中,每个字符串都是nvarchar,因为javascript内部是UTF8。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句