public List<Column> GetColumns( Microsoft.SqlServer.Management.Smo.Table table ) { var columns = new List<Column>(); foreach (Microsoft.SqlServer.Management.Smo.Column column in table.Columns) { var dataType = column.DataType.GetClrType().Replace( "System.", "" ); var bimlColumn = new Column { Name = column.Name, DataType = dataType, }; if (column.Nullable) bimlColumn.IsNullable = true.ToString().ToLower(); bool dataTypeHasLength = ( dataType.Equals( "string", StringComparison.OrdinalIgnoreCase ) || dataType.Equals( "ansistring", StringComparison.OrdinalIgnoreCase ) || dataType.Equals( "ansistringfixedlength", StringComparison.OrdinalIgnoreCase ) || dataType.Equals( "binary", StringComparison.OrdinalIgnoreCase ) ); if (dataTypeHasLength) bimlColumn.Length = column.DataType.MaximumLength.ToString( CultureInfo.InvariantCulture ); var annotations = GetAnnotations( column.ExtendedProperties ); if (annotations.Any()) bimlColumn.Annotations = annotations; columns.Add( bimlColumn ); } return columns; }