public async Task SyncAsync() { ReadOnlyCollection <MobileServiceTableOperationError> syncErrors = null; try { //await this._client.SyncContext.PushAsync(); //_productTable.DeleteAsync(); //var productList = await _productTable.ToListAsync(); //productList.ForEach(p => _productTable.DeleteAsync(p)); var deleteQuery = new Microsoft.WindowsAzure.MobileServices.Query.MobileServiceTableQueryDescription("Product"); await _store.DeleteAsync(deleteQuery); var productList = await GetProductsAsyncAPI(); //var productTableQuery = this._productTable.CreateQuery(); await _store.UpsertAsync("Product", productList, true); //_client.SyncContext.Store. //await this._productTable.PullAsync( // //The first parameter is a query name that is used internally by the client SDK to implement incremental sync. // //Use a different query name for each unique query in your program // "availableProducts", productTableQuery); } catch (MobileServicePushFailedException exc) { if (exc.PushResult != null) { syncErrors = exc.PushResult.Errors; } } catch (Exception ex) { } // Simple error/conflict handling. A real application would handle the various errors like network conditions, // server conflicts and others via the IMobileServiceSyncHandler. if (syncErrors != null) { foreach (var error in syncErrors) { if (error.OperationKind == MobileServiceTableOperationKind.Update && error.Result != null) { //Update failed, reverting to server's copy. await error.CancelAndUpdateItemAsync(error.Result); } else { // Discard local change. await error.CancelAndDiscardItemAsync(); } Debug.WriteLine(@"Error executing sync operation. Item: {0} ({1}). Operation discarded.", error.TableName, error.Item["id"]); } } }
public async Task DeleteAsync_DeletesTheRow() { await PrepareTodoTable(); // insert a row and make sure it is inserted TestUtilities.ExecuteNonQuery(TestDbName, "INSERT INTO todo (id, __createdAt) VALUES ('abc', 123)"); long count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 1L); // delete the row using (var store = new MobileServiceSQLiteStore(TestDbName)) { DefineTestTable(store); await store.InitializeAsync(); await store.DeleteAsync(TestTable, new[] { "abc" }); } // rows should be zero now count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 0L); }
public async Task DeleteAsync_DeletesTheRow_WhenTheyMatchTheQuery() { await PrepareTodoTable(); // insert rows and make sure they are inserted TestUtilities.ExecuteNonQuery(TestDbName, "INSERT INTO todo (id, __createdAt) VALUES ('abc', 1), ('def', 2), ('ghi', 3)"); long count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 3L); // delete the row using (var store = new MobileServiceSQLiteStore(TestDbName)) { DefineTestTable(store); await store.InitializeAsync(); var query = MobileServiceTableQueryDescription.Parse(TestTable, "$filter=__createdAt gt 1"); await store.DeleteAsync(query); } // 1 row should be left count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 1L); }
public async Task Upsert_ThenLookup_ThenUpsert_ThenDelete_ThenLookup() { TestUtilities.DropTestTable(TestDbName, TestTable); using (var store = new MobileServiceSQLiteStore(TestDbName)) { // define item with all type of supported fields var originalItem = new JObject() { { "id", "abc" }, { "bool", true }, { "int", 45 }, { "double", 123.45d }, { "guid", Guid.NewGuid() }, { "date", testDate }, { "options", new JObject() { { "class", "A" } } }, { "friends", new JArray() { "Eric", "Jeff" } } }; store.DefineTable(TestTable, originalItem); // create the table await store.InitializeAsync(); // first add an item await store.UpsertAsync(TestTable, new[] { originalItem }, ignoreMissingColumns : false); // read the item back JObject itemRead = await store.LookupAsync(TestTable, "abc"); // make sure everything was persisted the same Assert.AreEqual(originalItem.ToString(), itemRead.ToString()); // change the item originalItem["double"] = 111.222d; // upsert the item await store.UpsertAsync(TestTable, new[] { originalItem }, ignoreMissingColumns : false); // read the updated item JObject updatedItem = await store.LookupAsync(TestTable, "abc"); // make sure the float was updated Assert.AreEqual(updatedItem.Value <double>("double"), 111.222d); // make sure the item is same as updated item Assert.AreEqual(originalItem.ToString(), updatedItem.ToString()); // make sure item is not same as its initial state Assert.AreNotEqual(originalItem.ToString(), itemRead.ToString()); // now delete the item await store.DeleteAsync(TestTable, new[] { "abc" }); // now read it back JObject item4 = await store.LookupAsync(TestTable, "abc"); // it should be null because it doesn't exist Assert.IsNull(item4); } }
public async Task Upsert_ThenLookup_ThenUpsert_ThenDelete_ThenLookup() { TestUtilities.DropTestTable(TestDbName, TestTable); using (var store = new MobileServiceSQLiteStore(TestDbName)) { // define item with all type of supported fields var originalItem = new JObject() { { "id", "abc" }, { "bool", true }, { "int", 45 }, { "double", 123.45d }, { "guid", Guid.NewGuid() }, { "date", testDate }, { "options", new JObject(){ {"class", "A"} } }, { "friends", new JArray(){ "Eric", "Jeff" } } }; store.DefineTable(TestTable, originalItem); // create the table await store.InitializeAsync(); // first add an item await store.UpsertAsync(TestTable, new[] { originalItem }, ignoreMissingColumns: false); // read the item back JObject itemRead = await store.LookupAsync(TestTable, "abc"); // make sure everything was persisted the same Assert.AreEqual(originalItem.ToString(), itemRead.ToString()); // change the item originalItem["double"] = 111.222d; // upsert the item await store.UpsertAsync(TestTable, new[] { originalItem }, ignoreMissingColumns: false); // read the updated item JObject updatedItem = await store.LookupAsync(TestTable, "abc"); // make sure the float was updated Assert.AreEqual(updatedItem.Value<double>("double"), 111.222d); // make sure the item is same as updated item Assert.AreEqual(originalItem.ToString(), updatedItem.ToString()); // make sure item is not same as its initial state Assert.AreNotEqual(originalItem.ToString(), itemRead.ToString()); // now delete the item await store.DeleteAsync(TestTable, new[] { "abc" }); // now read it back JObject item4 = await store.LookupAsync(TestTable, "abc"); // it should be null because it doesn't exist Assert.IsNull(item4); } }
public async Task DeleteAsync_DeletesTheRow() { await PrepareTodoTable(); // insert a row and make sure it is inserted TestUtilities.ExecuteNonQuery(TestDbName, "INSERT INTO todo (id, createdAt) VALUES ('abc', 123)"); long count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 1L); // delete the row using (var store = new MobileServiceSQLiteStore(TestDbName)) { DefineTestTable(store); await store.InitializeAsync(); await store.DeleteAsync(TestTable, new[] { "abc" }); } // rows should be zero now count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 0L); }
public async Task DeleteAsync_DeletesTheRow_WhenTheyMatchTheQuery() { await PrepareTodoTable(); // insert rows and make sure they are inserted TestUtilities.ExecuteNonQuery(TestDbName, "INSERT INTO todo (id, createdAt) VALUES ('abc', 1), ('def', 2), ('ghi', 3)"); long count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 3L); // delete the row using (var store = new MobileServiceSQLiteStore(TestDbName)) { DefineTestTable(store); await store.InitializeAsync(); var query = MobileServiceTableQueryDescription.Parse(TestTable, "$filter=createdAt gt 1"); await store.DeleteAsync(query); } // 1 row should be left count = TestUtilities.CountRows(TestDbName, TestTable); Assert.AreEqual(count, 1L); }
public async Task <int> DeleteItemAsync(Patient item) { await database.DeleteAsync("Patient", new List <string>() { item.Id.ToString() }); return(200); }