private async Task SaveVariables()
        {
            if (_isInMemory)
            {
                return;
            }

            using (var database = new Database("ConnectionString"))
            {
                while (_variablesToSave.Count > 0)
                {
                    var variable = _variablesToSave.Take();

                    var persistedVariable = new PersistedVariable
                    {
                        Name     = variable.Name,
                        DataType = variable.Value.GetType().Name,
                        Value    = variable.Value.ToString()
                    };

                    if (_persistedVariables.Contains(variable.Name))
                    {
                        await database.UpdateAsync("Variable", "Name", persistedVariable, variable.Name, new[] { "Value" });
                    }
                    else
                    {
                        await database.InsertAsync("Variable", "Name", false, persistedVariable);

                        _persistedVariables.Add(variable.Name);
                    }
                }
            }
        }
        private async Task SaveVariables()
        {
            if (_isInMemory)
            {
                return;
            }

            using (var database = new Database("ConnectionString"))
            {
                while (_variablesToSave.Count > 0)
                {
                    var variable = _variablesToSave.Take();

                    var persistedVariable = new PersistedVariable
                    {
                        Name = variable.Name,
                        DataType = variable.Value.GetType().Name,
                        Value = variable.Value.ToString()
                    };

                    if (_persistedVariables.Contains(variable.Name))
                    {
                        await database.UpdateAsync("Variable", "Name", persistedVariable, variable.Name, new[] {"Value"});
                    }
                    else
                    {
                        await database.InsertAsync("Variable", "Name", false, persistedVariable);
                        _persistedVariables.Add(variable.Name);
                    }
                }
            }
        }
        private IVariable CreateVariable(PersistedVariable persistedVariable)
        {
            var variable = CreateVariableByType(persistedVariable.DataType);

            variable.Name  = persistedVariable.Name;
            variable.Value = ConvertVariableValue(persistedVariable.Value, persistedVariable.DataType);
            return(variable);
        }
 private IVariable CreateVariable(PersistedVariable persistedVariable)
 {
     var variable = CreateVariableByType(persistedVariable.DataType);
     variable.Name = persistedVariable.Name;
     variable.Value = ConvertVariableValue(persistedVariable.Value, persistedVariable.DataType);
     return variable;
 }