public List<Table> GetTables( Microsoft.SqlServer.Management.Smo.Database database, bool splitFactsAndDimensions ) { var tables = new List<Table>(); foreach (Microsoft.SqlServer.Management.Smo.Table table in database.Tables) { if (splitFactsAndDimensions) { var tableName = table.Name.ToLower(); if (tableName.StartsWith( "dim" ) || tableName.StartsWith( "fact" )) continue; } var bimlTable = new Table { Name = table.Name, SchemaName = database.Name + "." + table.Schema, Columns = GetColumns( table ), Indexes = GetIndexes( table ), Keys = GetKeys( table ), }; var annotations = GetAnnotations( table.ExtendedProperties ); if (annotations.Any()) bimlTable.Annotations = annotations; tables.Add( bimlTable ); } return tables; }