0

我正在使用 jaydata + sqlite 管理离线数据库。在 jaydata nvarchar(20) 不是有效的数据类型,所以我需要使用“字符串”作为数据类型。Online db 使用数据类型为 nvarchar(20)。

现在,我的问题是:是否可以同时映射离线数据库和在线数据库,因为“nvarchar(20)”是在线数据库上的数据类型,而“字符串”是离线数据库上的数据类型?


这是我应该在我的在线数据库中创建的:

在此处输入图像描述

这是我用 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}
});
4

1 回答 1

1

免责声明:我是 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。

于 2013-11-14T13:48:21.033 回答