1

我想将数据本地存储在 SQL Server CE 表和云中(WAMS 或 ZUMO 表)。

storedInCloud在 SQL Server CE 表中有一个 bool 列,它首先设置为 false,然后,当插入云表成功时,更新为 true。这样我就可以继续尝试“播种云”,直到成功。

不过,要做到这一点,我需要 SQL Server CE 表中的主 ID 键*,这样我就知道要更新哪个表。我想要的伪代码是:

int locID = App.TaSLs_SQLCE_LocationDataContext._taSLs_SQLCE_Location.InsertOnSubmit(newLocation);
locDB.SubmitChanges();
if (InsertRecordToCloud(newLocation))
{
    //Update SQL Server CE table, setting storedInCloud to true for record where LocationID = locID
}

...但这不起作用,因为 SQL Server CEInsertOnSubmit实际上并没有插入记录,因此不会ID生成 val。SubmitChanges()确实插入,但它可能是提交的多个记录/更改。

那么有没有办法,实际上,循环并一次提交一个更改,取回主键 val(LocationID,下面)?

*[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
        public int LocationId
    . . .

再想一想,我想我可以颠倒表提交/提交的顺序,这样我就可以这样做:

if (CommitToCloudSucceeds)
{
    // insert into SQL Server CE, setting storedInCloud to true
}
else
{
    // insert into SQL Server CE, setting storedInCloud to false
}

...然后定期循环遍历 SQL Server CE 表,为那些记录在哪里调用上面的代码storedInCloud = false

4

0 回答 0