/// <summary> /// Run the comparison. /// </summary> /// <returns></returns> public string Execute() { var sb = new StringBuilder(); var compareTables = new CompareTables(sb, _writer); //make sure they are in topological order- if 2 tables are added, the first must not have a foreign key to the second... var comparedTables = SchemaTablesSorter.TopologicalSort(_compareSchema); compareTables.Execute(_baseSchema.Tables, comparedTables); //compare sequences var compareSequences = new CompareSequences(sb, _writer); compareSequences.Execute(_baseSchema.Sequences, _compareSchema.Sequences); //compare views var compareViews = new CompareViews(sb, _writer); compareViews.Execute(_baseSchema.Views, _compareSchema.Views); //compare stored procedures and functions var compareProcedures = new CompareProcedures(sb, _writer); compareProcedures.Execute(_baseSchema.StoredProcedures, _compareSchema.StoredProcedures); var compareFunctions = new CompareFunctions(sb, _writer); compareFunctions.Execute(_baseSchema.Functions, _compareSchema.Functions); //compare packages var comparePackages = new ComparePackages(sb, _writer); comparePackages.Execute(_baseSchema.Packages, _compareSchema.Packages); return(sb.ToString()); }
/// <summary> /// Run the comparison and returns a <see cref="CompareResult"/>. /// </summary> /// <returns></returns> public IList <CompareResult> ExecuteResult() { var list = new List <CompareResult>(); var compareTables = new CompareTables(list, _writer); //make sure they are in topological order- if 2 tables are added, the first must not have a foreign key to the second... var comparedTables = SchemaTablesSorter.TopologicalSort(_compareSchema); compareTables.Execute(_baseSchema.Tables, comparedTables); //compare sequences var compareSequences = new CompareSequences(list, _writer); compareSequences.Execute(_baseSchema.Sequences, _compareSchema.Sequences); //compare views var compareViews = new CompareViews(list, _writer); compareViews.Execute(_baseSchema.Views, _compareSchema.Views); //compare stored procedures and functions var compareProcedures = new CompareProcedures(list, _writer); compareProcedures.Execute(_baseSchema.StoredProcedures, _compareSchema.StoredProcedures); var compareFunctions = new CompareFunctions(list, _writer); compareFunctions.Execute(_baseSchema.Functions, _compareSchema.Functions); //compare packages var comparePackages = new ComparePackages(list, _writer); comparePackages.Execute(_baseSchema.Packages, _compareSchema.Packages); return(list); }
/// <summary> /// Run the comparison and returns a <see cref="CompareResult"/>. /// </summary> /// <returns></returns> public IList<CompareResult> ExecuteResult() { var list = new List<CompareResult>(); var compareTables = new CompareTables(list, _writer); //make sure they are in topological order- if 2 tables are added, the first must not have a foreign key to the second... var comparedTables = SchemaTablesSorter.TopologicalSort(_compareSchema); compareTables.Execute(_baseSchema.Tables, comparedTables); //compare sequences var compareSequences = new CompareSequences(list, _writer); compareSequences.Execute(_baseSchema.Sequences, _compareSchema.Sequences); //compare views var compareViews = new CompareViews(list, _writer); compareViews.Execute(_baseSchema.Views, _compareSchema.Views); //compare stored procedures and functions var compareProcedures = new CompareProcedures(list, _writer); compareProcedures.Execute(_baseSchema.StoredProcedures, _compareSchema.StoredProcedures); var compareFunctions = new CompareFunctions(list, _writer); compareFunctions.Execute(_baseSchema.Functions, _compareSchema.Functions); //compare packages var comparePackages = new ComparePackages(list, _writer); comparePackages.Execute(_baseSchema.Packages, _compareSchema.Packages); return list; }
public void WhenViewAdded() { //arrange var sb = new List<CompareResult>(); var writer = new ComparisonWriter(SqlType.SqlServer); var target = new CompareViews(sb, writer); var baseViews = new List<DatabaseView>(); var compareViews = new List<DatabaseView> { CreateView() }; //act target.Execute(baseViews, compareViews); var result = string.Join(Environment.NewLine, sb.Select(x => x.Script).ToArray()); //assert Assert.IsTrue(result.Contains("CREATE VIEW")); }
public void WhenViewChanged() { //arrange var sb = new List<CompareResult>(); var writer = new ComparisonWriter(SqlType.SqlServer); var target = new CompareViews(sb, writer); var baseViews = new List<DatabaseView> { CreateView() }; var view = CreateView(); const string orderByName = " ORDER BY NAME"; view.Sql += orderByName; var compareViews = new List<DatabaseView> { view }; //act target.Execute(baseViews, compareViews); var result = string.Join(Environment.NewLine, sb.Select(x => x.Script).ToArray()); //assert Assert.IsTrue(result.Contains("DROP VIEW")); Assert.IsTrue(result.Contains("CREATE VIEW")); Assert.IsTrue(result.Contains(orderByName)); }
public void WhenViewsIdenticalWithDifferentFormatSql() { //arrange var sb = new List<CompareResult>(); var writer = new ComparisonWriter(SqlType.SqlServer); var target = new CompareViews(sb, writer); var databaseView = CreateView(); databaseView.Sql = @" create view ""Alphabetical list of products"" AS SELECT Products.*, Categories.CategoryName FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID WHERE (((Products.Discontinued)=0)) "; var baseViews = new List<DatabaseView> { databaseView }; var databaseView2 = CreateView(); databaseView2.Sql = @"create view [dbo].[Alphabetical list of products] AS SELECT Products.*, Categories.CategoryName FROM Categories INNER JOIN Products ON Categories.CategoryID = Products.CategoryID WHERE (((Products.Discontinued)=0))"; var compareViews = new List<DatabaseView> { databaseView2 }; //act target.Execute(baseViews, compareViews); var result = string.Join(Environment.NewLine, sb.Select(x=>x.Script).ToArray()); //assert Assert.IsTrue(string.IsNullOrEmpty(result)); }