示例#1
0
 /// <summary>
 /// Creates table definition instance.
 /// </summary>
 /// <param name="tableName">Table name.</param>
 /// <param name="columns">Columns.</param>
 /// <param name="foreignKeys">Foreign keys.</param>
 /// <returns>Returns created table definition.</returns>
 public static DbTableDefinition Create(string tableName, DbColumnDefinition[] columns, DbForeignKeyDefinition[] foreignKeys)
 {
     return Create(tableName, columns, foreignKeys, Enumerable.Empty<DbTriggerDefinition>());
 }
        /// <summary>
        /// Gets the SQL Server data type for the specified column.
        /// </summary>
        /// <param name="column">
        /// The column.
        /// </param>
        /// <returns>
        /// The SQL Server data type.
        /// </returns>
        private static string GetSqlType(DbColumnDefinition column)
        {
            switch (column.ColumnType.ToUpperInvariant())
            {
                case "VARCHAR":
                case "NVARCHAR":
                    {
                        var characterLength = "MAX";
                        if (column.CharacterLength != -1)
                        {
                            characterLength = column.CharacterLength.ToString(CultureInfo.InvariantCulture);
                        }

                        return string.Format(CultureInfo.InvariantCulture, "[{0}]({1})", column.ColumnType, characterLength);
                    }

                default:
                    return string.Format(CultureInfo.InvariantCulture, "[{0}]", column.ColumnType);
            }
        }
示例#3
0
        /// <summary>
        /// Compares the column definitions.
        /// </summary>
        /// <param name="a1">The a1.</param>
        /// <param name="a2">The a2.</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        public static bool CompareColumnDefinitions(DbColumnDefinition[] a1, DbColumnDefinition[] a2)
        {
            if (a1 == null || a2 == null)
                return false;

            if (a1.Length != a2.Length)
                return false;
            
            if (a1.Length == 0)
                return true;

            return !a1.Where((t, i) => !t.ColumnName.Equals(a2[i].ColumnName) || !t.ColumnType.Equals(a2[i].ColumnType) || t.IsKey != a2[i].IsKey || !t.ColumnSubType.Equals(a2[i].ColumnSubType)).Any();
        }