public static DatabaseDifferences Load(string fileName)
        {
            XmlSerializer xs = new XmlSerializer(typeof(DatabaseDifferences));
            StreamReader  xmlStreamReader = new StreamReader(fileName);
            XmlTextReader xmlTextReader   = new XmlTextReader(xmlStreamReader);

            DatabaseDifferences deserialized = (DatabaseDifferences)xs.Deserialize(xmlTextReader);

            xmlTextReader.Close();

            return(deserialized);
        }
Beispiel #2
0
        /// <summary>
        /// Compare two databases and show the differences
        /// </summary>
        private void Compare()
        {
            string infoMessage = string.Empty;

            ClearDisplay();

            _dbDifferences = new DatabaseDifferences ();
            Engine.Compare dbCompare = new Compare();
            dbCompare.CompareSchemaStarted+=new DaBCoS.Engine.Compare.CompareSchemaStartedDelegate(this.dbCompare_CompareSchemaStarted);
            dbCompare.CompareSchemaFinished+=new DaBCoS.Engine.Compare.CompareSchemaFinishedDelegate(this.dbCompare_CompareSchemaFinished);

            ShowInfoMessage("Starting compare...");

            ResetLists();

            // Get the user differences
            if (_includeUsers)
            {
                _dbDifferences.UserDifferences = dbCompare.CompareSchemaObjects(_databaseLeft, _databaseRight, Difference.DatabaseObjectType.Users);
                ShowDifferences(lvUsers, _dbDifferences.UserDifferences);
                infoMessage += "Users (" + (_dbDifferences.UserDifferences.Count - _dbDifferences.UserDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.UserDifferences.Count.ToString() + " diff)";
            }

            // Get the constraint differences
            if (_includeConstraints)
            {
                _dbDifferences.ConstraintDifferences = dbCompare.CompareSchemaObjects(_databaseLeft, _databaseRight, Difference.DatabaseObjectType.Constraint);
                ShowDifferences(lvConstraints, _dbDifferences.ConstraintDifferences);
                infoMessage += "Constraints (" + (_dbDifferences.ConstraintDifferences.Count-_dbDifferences.ConstraintDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.ConstraintDifferences.Count.ToString() + " diff)";
            }

            // Get the table differences
            if (_includeTables)
            {
                _dbDifferences.TableDifferences = dbCompare.CompareTables(_databaseLeft, _databaseRight);
                ShowDifferences(lvTables, _dbDifferences.TableDifferences);
                infoMessage += "Tables (" + (_dbDifferences.TableDifferences.Count-_dbDifferences.TableDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.TableDifferences.Count.ToString() + " diff)";
            }

            // Get the stored proc differences
            if (_includeStoredProcedures)
            {
                _dbDifferences.StoredProcDifferences = dbCompare.CompareSchemaObjects(_databaseLeft, _databaseRight, Difference.DatabaseObjectType.StoredProcedure);
                ShowDifferences(lvProcedures, _dbDifferences.StoredProcDifferences);
                infoMessage += " Procs (" + (_dbDifferences.StoredProcDifferences.Count-_dbDifferences.StoredProcDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.StoredProcDifferences.Count.ToString() + " diff)";
            }

            // Get the function differences
            if (_includeFunctions)
            {
                _dbDifferences.FunctionDifferences = dbCompare.CompareSchemaObjects(_databaseLeft, _databaseRight, Difference.DatabaseObjectType.Function);
                ShowDifferences(lvFunctions, _dbDifferences.FunctionDifferences);
                infoMessage += " Functions (" + (_dbDifferences.FunctionDifferences.Count-_dbDifferences.FunctionDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.FunctionDifferences.Count.ToString() + " diff)";
            }

            // Get the view differences
            if (_includeViews)
            {
                _dbDifferences.ViewDifferences = dbCompare.CompareSchemaObjects(_databaseLeft, _databaseRight, Difference.DatabaseObjectType.View);
                ShowDifferences(lvViews, _dbDifferences.ViewDifferences);
                infoMessage += " Views (" + (_dbDifferences.ViewDifferences.Count-_dbDifferences.ViewDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.ViewDifferences.Count.ToString() + " diff)";
            }

            // Get the trigger differences
            if (_includeTriggers)
            {
                _dbDifferences.TriggerDifferences = dbCompare.CompareSchemaObjects(_databaseLeft, _databaseRight, Difference.DatabaseObjectType.Trigger);
                ShowDifferences(lvTriggers, _dbDifferences.TriggerDifferences);
                infoMessage += " Triggers (" + (_dbDifferences.TriggerDifferences.Count-_dbDifferences.TriggerDifferences.CountByOutcome(Difference.DifferenceOutcome.Same)).ToString() + " of " + _dbDifferences.TriggerDifferences.Count.ToString() + " diff)";
            }

            infoMessage = "Complete: " + infoMessage;
            ShowInfoMessage(infoMessage);
            pbState.Value = 0;
        }
Beispiel #3
0
 private void SaveResults(string fileName)
 {
     try
     {
         // Create a difference serializer and save
         DatabaseDifferences diffReport = new DatabaseDifferences(_dbDifferences.TableDifferences, _dbDifferences.ConstraintDifferences, _dbDifferences.ViewDifferences, _dbDifferences.StoredProcDifferences, _dbDifferences.FunctionDifferences, _dbDifferences.TriggerDifferences);
         diffReport.Save(fileName);
     }
     catch(Exception ex)
     {
         ShowInfoMessage("ERROR: " + ex.Message);
     }
 }