示例#1
0
        public IEnumerable <string> RenameColumn(string tableName, string oldName, string newName)
        {
            Table table  = GetTable(tableName);
            var   column = new Microsoft.SqlServer.Management.Smo.Column(table, oldName);

            // rename default constraint
            string            oldDefaultConstraintName = ObjectNameHelper.GetObjectName(tableName, "DF", MaximumDbObjectNameLength, oldName);
            string            constraintName           = oldDefaultConstraintName;
            DefaultConstraint defaultConstraint        = column.AddDefaultConstraint(constraintName);

            defaultConstraint.Rename(ObjectNameHelper.GetObjectName(tableName, "DF", MaximumDbObjectNameLength, newName));

            // rename column
            table.Columns.Add(column);
            column.Rename(newName);

            // script changes
            IEnumerable <string> commandTexts         = ScriptChanges(table.Parent.Parent);
            string renameDefaultConstraintCommandText = string.Format(CultureInfo.InvariantCulture, "IF OBJECT_ID('{0}') IS NOT NULL ", oldDefaultConstraintName) + commandTexts.First();

            yield return(Regex.Replace(renameDefaultConstraintCommandText, @"EXEC \[\w+\]\.dbo\.sp_rename", @"EXEC dbo.sp_rename")); // for some reason SMO is putting the server name in front of dbo.sp_rename which we do not have in the SqlServerProvider

            foreach (string commandText in commandTexts.Skip(1))
            {
                yield return(commandText);
            }
        }
示例#2
0
        private static DefaultConstraint AddDefaultConstraint(Microsoft.SqlServer.Management.Smo.Column column, string tableName, object value)
        {
            string            constraintName    = ObjectNameHelper.GetObjectName(tableName, "DF", MaximumDbObjectNameLength, column.Name);
            DefaultConstraint defaultConstraint = column.AddDefaultConstraint(constraintName);

            defaultConstraint.Text = GetDefaultValueAsString(value);
            return(defaultConstraint);
        }
 public void VerifyGetObjectName()
 {
     Assert.AreEqual("Customer_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 128), "Basic.");
     Assert.AreEqual("Customer_Id_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 128, "Id"), "Basic with one additional name.");
     Assert.AreEqual("Customer_Id_Name_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 128, "Id", "Name"), "Basic with two additional names.");
     Assert.AreEqual("Cus-mer_Id_Name_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 18, "Id", "Name"), "One char too long.");
     Assert.AreEqual("Cus-er_Id_Name_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 17, "Id", "Name"), "Two chars too long.");
     Assert.AreEqual("Cu-er_Id_Name_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 16, "Id", "Name"), "Three chars too long.");
     Assert.AreEqual("Cu-r_Id_Name_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 15, "Id", "Name"), "Four chars too long.");
     Assert.AreEqual("C-r_Id_Name_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 14, "Id", "Name"), "Five chars too long.");
     Assert.AreEqual("C-r_Id_N-e_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 13, "Id", "Name"), "Six chars too long.");
     Assert.AreEqual("C_Id_N-e_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 12, "Id", "Name"), "Seven chars too long.");
     Assert.AreEqual("C_Id_N-e_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 11, "Id", "Name"), "Eight chars too long.");
     Assert.AreEqual("C_Id_N_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 10, "Id", "Name"), "Nine chars too long.");
     Assert.AreEqual("C_Id_N_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 9, "Id", "Name"), "Ten chars too long.");
     Assert.AreEqual("C_I_N_DF", ObjectNameHelper.GetObjectName("Customer", "DF", 8, "Id", "Name"), "Eleven chars too long.");
 }
示例#4
0
        public IEnumerable <string> DropColumn(string tableName, string columnName)
        {
            Table  table = GetTable(tableName);
            string defaultConstraintName = ObjectNameHelper.GetObjectName(tableName, "DF", MaximumDbObjectNameLength, columnName);
            var    column = new Microsoft.SqlServer.Management.Smo.Column(table, columnName);

            column.AddDefaultConstraint(defaultConstraintName);
            table.Columns.Add(column);

            column.Drop();

            // script changes
            IEnumerable <string> commandTexts       = ScriptChanges(table.Parent.Parent);
            string dropDefaultConstraintCommandText = string.Format(CultureInfo.InvariantCulture, "IF OBJECT_ID('{0}') IS NOT NULL ", defaultConstraintName) + commandTexts.First();

            yield return(dropDefaultConstraintCommandText);

            foreach (string commandText in commandTexts.Skip(1))
            {
                yield return(commandText);
            }
        }
 public void VerifyGetObjectNameThrowsIfTooShort()
 {
     Assert.That(() => ObjectNameHelper.GetObjectName("Customer", "DF", 7, "Id", "Name"), Throws.ArgumentException);
 }
 public void VerifyGetObjectNameThrowsIfTooShort()
 {
     ObjectNameHelper.GetObjectName("Customer", "DF", 7, "Id", "Name");
 }