public int Update(Table table, IDictionary<string, object> data, SimpleExpression criteria)
        {
            var keys = criteria.TryGetKeyCombo();
            if (keys != KeyCombo.Empty)
            {
                UpdateRow(table, keys, data);
                return 1;
            }

            int count = 0;
            foreach (var matchingRow in _adapter.Find(table.TableName, criteria))
            {
                UpdateRow(table, KeyCombo.FromDictionary(matchingRow), data);
                ++count;
            }

            return count;
        }
        //public override int Update(string tableName, IDictionary<string, object> data)
        //{
        //    var table = GetTable(tableName);
        //    table.UpdateRow(data);
        //    return 1;
        //}

        public override int Delete(string tableName, SimpleExpression criteria)
        {
            var table = GetTable(tableName);
            var keys = criteria.TryGetKeyCombo();
            if (keys != KeyCombo.Empty && !string.IsNullOrEmpty(keys.RowKey))
            {
                table.Delete(keys.PartitionKey, keys.RowKey);
                return 1;
            }

            var dict = criteria.ToDictionary();
            if (dict != null && dict.ContainsKey(PartitionKey) && dict.ContainsKey(RowKey))
            {
                table.Delete(dict[PartitionKey].ToStringOrEmpty(), dict[RowKey].ToStringOrEmpty());
                return 1;
            }

            int count = 0;
            foreach (var row in Find(tableName, criteria))
            {
                table.Delete(row);
                ++count;
            }
            return count;
        }