/// <summary>
        /// Copies data from customer.note field into a new note in the collection.
        /// </summary>
        public override void Up()
        {
            //// Don't exeucte if the column is already there
            var columns = _sqlSyntax.GetColumnsInSchema(_database).ToArray();

            if (
                columns.Any(
                    x => x.TableName.InvariantEquals("merchCustomer") && x.ColumnName.InvariantEquals("notes")))
            {
                var dtos  = _database.Fetch <CustomerDto>("SELECT * FROM merchCustomer WHERE notes IS NOT NULL");
                var notes = new List <INote>();
                foreach (var dto in dtos)
                {
                    var note = _noteService.CreateNote(
                        dto.Key,
                        Core.Constants.TypeFieldKeys.Entity.CustomerKey,
                        dto.Notes);

                    note.InternalOnly = true;
                    notes.Add(note);
                }

                if (notes.Any())
                {
                    _noteService.Save(notes);
                }

                //// now remove the notes column from the merchCustomer table
                //// We can't do this without messing up the Migration.
                //Delete.Column("notes").FromTable("merchCustomer");
            }
        }
Ejemplo n.º 2
0
        private void ValidateDbColumns(DatabaseSchemaResult result)
        {
            //Check columns in configured database against columns in schema
            var columnsInDatabase         = _sqlSyntaxProvider.GetColumnsInSchema(_database);
            var columnsPerTableInDatabase = columnsInDatabase.Select(x => string.Concat(x.TableName, ",", x.ColumnName)).ToList();
            var columnsPerTableInSchema   = result.TableDefinitions.SelectMany(x => x.Columns.Select(y => string.Concat(y.TableName, ",", y.Name))).ToList();
            //Add valid and invalid column differences to the result object
            var validColumnDifferences = columnsPerTableInDatabase.Intersect(columnsPerTableInSchema, StringComparer.InvariantCultureIgnoreCase);

            foreach (var column in validColumnDifferences)
            {
                result.ValidColumns.Add(column);
            }

            var invalidColumnDifferences =
                columnsPerTableInDatabase.Except(columnsPerTableInSchema, StringComparer.InvariantCultureIgnoreCase)
                .Union(columnsPerTableInSchema.Except(columnsPerTableInDatabase, StringComparer.InvariantCultureIgnoreCase));

            foreach (var column in invalidColumnDifferences)
            {
                result.Errors.Add(new Tuple <string, string>("Column", column));
            }
        }