/// <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); } }
/// <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(); }