public override async Task DeleteAsync(string tableName, IEnumerable <string> ids)
        {
            await base.DeleteAsync(tableName, ids);

            ILiveCollectionTable table = null;

            if (LiveCollectionTable.Tables?.TryGetValue(tableName, out table) ?? false)
            {
                table.RemoveItemsAtIds(ids);
            }
        }
        public override async Task UpsertAsync(string tableName, IEnumerable <JObject> items, bool ignoreMissingColumns)
        {
            try
            {
                await base.UpsertAsync(tableName, items, ignoreMissingColumns);

                ILiveCollectionTable table = null;
                if (LiveCollectionTable.Tables?.TryGetValue(tableName, out table) ?? false)
                {
                    table.ProcessJObjects(items);
                }
            }
            catch (Exception e)
            {
                Serilog.Log.Verbose("\n===================================================================");
                Serilog.Log.Verbose("UpsertAsync EXCEPTION: " + e.Message);
                Serilog.Log.Verbose("===================================================================\n");
            }
        }