public async Task downloadCustomers() { var serverDb = new ServerDatabaseService(); var fetchedCustomers = await serverDb.getAllCustomers(); if (fetchedCustomers != null) { var countCustomer = await customerDb.Count(); int insertCustomers; if (countCustomer == 0) { insertCustomers = await customerDb.InsertAllCustomers(fetchedCustomers); } else { //compare against local var localCustomers = await customerDb.GetAllCustomers(); List <Models.Customer> fetchedData = new List <Models.Customer>(fetchedCustomers); List <Models.Customer> newData = fetchedData.Except <Models.Customer>(localCustomers).ToList(); List <Models.Customer> deletedData = localCustomers.Except <Models.Customer>(fetchedData).ToList(); if (newData != null) { //insert new data to local db insertCustomers = await customerDb.InsertAllCustomers(new ObservableCollection <Models.Customer>(newData)); } if (deletedData != null) { //delete deleted data in local db foreach (Models.Customer data in deletedData) { await customerDb.DeleteCustomer(data); } } } } }