Пример #1
0
        private string CreateUpdateCommand(ManagedObjectBase data, ManagedMetaObject metaObjectDescriptor, TableDescription tableDescription, ColumnDescription keyColumnDescriptor)
        {
            var commandText = @String.Empty;

            data.Verison = ModelContainer.VersionHead;

            commandText += "UPDATE";
            commandText += $" `{tableDescription.Name}`";
            commandText += $" SET ";

            var propertyAssignement = new List <string>();

            foreach (var columnDescription in tableDescription.Columns.Where(x => !x.IsKey))
            {
                var value = GetValueString(metaObjectDescriptor, columnDescription, data);
                propertyAssignement.Add($"`{columnDescription.Name}` = '{value}'");
            }
            commandText += $"{string.Join(", ", propertyAssignement)}";

            commandText += " WHERE";

            var keyValue = GetValueString(metaObjectDescriptor, keyColumnDescriptor, data);

            commandText += $" `{keyColumnDescriptor.Name}` = '{keyValue}'";

            return(commandText);
        }
Пример #2
0
        private ManagedObjectBase CreateInstanceOfManagedObject(string guidKey, ManagedMetaObject metaObjectDescriptor, object dataStore)
        {
            ManagedObjectBase data = null;
            var ctor = metaObjectDescriptor.Type.GetConstructor(new Type[] { });

            data = ctor.Invoke(new object[] { }) as ManagedObjectBase;
            InsertDataIntoModelContainer(data, dataStore);
            return(data);
        }
Пример #3
0
        private string GetValueString(ManagedMetaObject metaObjectDescriptor, ColumnDescription columnDescription, ManagedObjectBase entry)
        {
            var property = metaObjectDescriptor.Type.GetProperty(columnDescription.Name);
            var value    = property.GetValue(entry);

            if (value == null)
            {
                return("NULL");
            }
            else
            {
                if (columnDescription.IsReference)
                {
                    var data = columnDescription.Type.GetProperty("Key").GetValue(value);
                    return(data.ToString());
                }
                else if (value.GetType() == typeof(DateTime))
                {
                    DateTime?date = value as DateTime?;
                    if (date.HasValue)
                    {
                        return(date.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    }
                }
                else if (value.GetType() == typeof(TimeSpan))
                {
                    TimeSpan?date = value as TimeSpan?;
                    if (date.HasValue)
                    {
                        return(date.Value.TotalSeconds.ToString());
                    }
                }
                else if (value.GetType().IsEnum)
                {
                    int val = (int)value;
                    return((val).ToString());
                }
                else if (value.GetType() == typeof(bool))
                {
                    bool?date = (bool)value;
                    if (date.HasValue)
                    {
                        return((date.Value ? 1 : 0).ToString());
                    }
                }
                else
                {
                    return(value.ToString());
                }
            }

            return(null);
        }
Пример #4
0
 private ManagedObjectBase GetOrCreateDataInstance(string guidKey, List <ManagedObjectBase> dataSet, ManagedMetaObject metaObjectDescriptor, object dataStore)
 {
     return(GetInstanceFromModelContainer(guidKey, DataSet) ?? CreateInstanceOfManagedObject(guidKey, metaObjectDescriptor, dataStore));
 }
Пример #5
0
        private async void RunUpdateCommands(MySqlCommand command, IEnumerable <ManagedObjectBase> dataSet, ManagedMetaObject metaObjectDescriptor, TableDescription tableDescription)
        {
            var keyColumnDescription = tableDescription.Columns.First(x => x.IsKey);

            foreach (var data in dataSet)
            {
                var commandText = CreateUpdateCommand(data, MetaObjectDescriptor, TableDescription, keyColumnDescription);
                command.CommandText = commandText;
                int rowCount = await command.ExecuteNonQueryAsync();

                Debug.WriteLine(String.Format("Number of rows inserted={0}", rowCount));
            }
        }