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;
}