private void Reload(SQLiteConnection connection) { var columns = Table.Columns.ToArray(); // to preserve order var columnNames = String.Join(",", columns.Select(x => x.Name.EscapeIdentifier())); using (var command = new SQLiteCommand(LoadSql.FormatExt(columnNames, Table.Name), connection)) { command.Parameters.Add(new SQLiteParameter("@RowId", RowId)); using (var reader = command.ExecuteReader()) { while (reader.Read()) { for (var i = 0; i < columns.Length; i++) { var value = DbValue.FromDb(reader.GetValue(i), columns[i].Type, columns[i].Quantity); if (Cells[columns[i].Name] == null) { Cells.AddExisting(new Cell(this, columns[i], value)); } else { Cells[columns[i].Name].SetExistingValue(value); } } } } } }