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
は実際にはレコードを挿入しないため、これは機能しません。したがって、 ID
val は生成されません。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
.