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); }
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); }
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); }
private ManagedObjectBase GetOrCreateDataInstance(string guidKey, List <ManagedObjectBase> dataSet, ManagedMetaObject metaObjectDescriptor, object dataStore) { return(GetInstanceFromModelContainer(guidKey, DataSet) ?? CreateInstanceOfManagedObject(guidKey, metaObjectDescriptor, dataStore)); }
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)); } }