示例#1
0
		private void GenerateForColumns(SysDatabase sourceDb, SysDatabase targetDb)
		{
			var script = new TableColumnScriptGenerator().GenerateAllObjectsSyncScript(sourceDb.Tables, targetDb.Tables);

			if (!String.IsNullOrEmpty(script))
			{
				script = String.Format("USE [{0}]{1}{1}{2}", targetDb.Name, Environment.NewLine, script);
				System.IO.File.WriteAllText(String.Format(@"{0}\{1}_{2}.sql", _directory, "ColumnScript", _dateStamp), script);
			}
		}
		public void TableSyncScriptGenerator_GenerateSingleObjectSyncScript()
		{
			var tableSyncScriptGenerator = new TableColumnScriptGenerator();
			var script = tableSyncScriptGenerator.GenerateSingleObjectSyncScript(_sourceTable, _targetTable);
			
			Console.WriteLine("-------------- SCRIPT --------------");
			Console.WriteLine(script);

			//Assert.IsTrue(script.Contains("ALTER TABLE [TargetTable]\r\nADD [SecondColumn] varchar(100) NULL;\r\nGO"));
			Assert.IsTrue(script.Contains("ALTER TABLE [TargetTable]\r\nADD [ThirdColumn] nvarchar(50) NOT NULL;\r\nGO"));
		}
		public override String Process(SysDatabase source, SysDatabase target)
		{
		    try
			{
				var generator = new TableColumnScriptGenerator();
				{
					var script = generator.GenerateAllObjectsSyncScript(source.Tables, target.Tables);
					if (!String.IsNullOrEmpty(script))
					{
						script = String.Format("USE [{0}]{1}{1}{2}", target.Name, Environment.NewLine, script);
						GenerateFile(script);
					}
				}

				return Resources.OperationMessages.ColumnSyncSuccess;
			}
		    catch (Exception ex)
		    {				
				Error = true;
				return ex.Message;
		    }
		 }
		public void TableSyncScriptGenerator_GenerateAllObjectsSyncScript()
		{
			// [0]: all 3 columns, [1]: FirstColumn
			var sourceTables = new List<SysTable>() { _sourceTable, _targetTable };

			//[0]: SecondColumn, ThirdColumn; [1]: FirstColumn
			var targetTables = new List<SysTable>()
			{
				new SysTable()
				{
					Name = _sourceTable.Name,
					Columns = _sourceTable.Columns.Skip(1).ToList()
				},
				new SysTable()
				{
					Name = _targetTable.Name,
					Columns = _targetTable.Columns.Take(1).ToList()
				},
			};

			// expected:
			//   SourceTable - ADD FistColumn
			//   TargetTable - ADD SecondColumn

			var tableSyncScriptGenerator = new TableColumnScriptGenerator();
			var script = tableSyncScriptGenerator.GenerateAllObjectsSyncScript(sourceTables, targetTables);

			Console.WriteLine("-------------- SCRIPT --------------");
			Console.WriteLine(script);

			Assert.IsTrue(script.Contains("ALTER TABLE [SourceTable]\r\nADD [FirstColumn] int IDENTITY NOT NULL;\r\nGO"));			
			Assert.IsTrue(script.Contains("ALTER TABLE [TargetTable]\r\nADD [SecondColumn] varchar(100) NULL;\r\nGO"));
		}