public void SaveRow(ListMapping mapping, Tuple <int, ExpandoObject> value)
 {
     using (var providerSqlDynamic = new ProviderSqlDynamic(
                new TableDynamic {
         PrimaryField = mapping.Key, Name = mapping.TableName
     }, _connectionInfo.ToString()))
     {
         SyncRow(providerSqlDynamic, value, mapping);
     }
 }
 public void Delete(string tableName, string primaryField, object key)
 {
     using (var providerSqlDynamic = new ProviderSqlDynamic(new TableDynamic
     {
         PrimaryField = primaryField,
         Name = tableName
     }, _connectionInfo.ToString()))
     {
         providerSqlDynamic.DeleteRow(key);
     }
 }
 public void SaveRows(ListMapping mapping, List <Tuple <int, ExpandoObject> > values)
 {
     using (var providerSqlDynamic = new ProviderSqlDynamic(
                new TableDynamic {
         PrimaryField = mapping.Key, Name = mapping.TableName
     }, _connectionInfo.ToString()))
     {
         values.ForEach(item =>
         {
             SyncRow(providerSqlDynamic, item, mapping);
         });
     }
 }
        public int SaveRow(string key, string tableName, ExpandoObject value)
        {
            // !!! Identity increment = 1

            int newRowId = 0;

            using (var providerSqlDynamic = new ProviderSqlDynamic(
                       new TableDynamic {
                PrimaryField = key, Name = tableName
            }, _connectionInfo.ToString()))
            {
                var valueData = (IDictionary <string, object>)value;
                newRowId = providerSqlDynamic.CreateRowAndReturnID((ExpandoObject)valueData);
            }
            return(newRowId);
        }
        private void SyncRow(ProviderSqlDynamic provider, Tuple <int, ExpandoObject> value, ListMapping mapping)
        {
            var updateData = (IDictionary <string, object>) new ExpandoObject();
            var valueData  = (IDictionary <string, object>)value.Item2;

            updateData.Add(mapping.Key, value.Item1);
            mapping.ListMappingFields.ToList().ForEach(item =>
            {
                updateData.Add(item.FieldName, valueData[item.ItemName]);
            });

            if (provider.IsExists(value.Item1))
            {
                provider.UpdateRow((ExpandoObject)updateData);
            }
            else
            {
                provider.CreateRow((ExpandoObject)updateData);
            }
        }