1

SQL Server CE テーブルとクラウド (WAMS または ZUMO テーブル) にデータをローカルに保存したいと考えています。

storedInCloud最初に false に設定された SQL Server CE テーブルに bool 列があり、クラウド テーブルへの挿入が成功すると 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は実際にはレコードを挿入しないため、これは機能しません。したがって、 IDval は生成されません。SubmitChanges()挿入しますが、送信されるのは複数のレコード/変更である可能性があります。

事実上、一度に 1 つの変更をループして送信し、主キー 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