public GetDimensions ( Microsoft database ) : List |
||
database | Microsoft | |
return | List |
public List<Dimension> GetDimensions( Microsoft.SqlServer.Management.Smo.Database database )
{
var dimensions = new List<Dimension>();
foreach( Microsoft.SqlServer.Management.Smo.Table table in database.Tables )
{
var tableName = table.Name.ToLower();
if( !tableName.StartsWith( "dim" ) )
continue;
var bimlTable = new Dimension
{
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;
dimensions.Add( bimlTable );
}
return dimensions;
}
public static Biml BuildBiml( BimlRequest request ) { // Configure SQL SMO var server = new Server( request.ServerName ); var scriptingOptions = new ScriptingOptions { Encoding = Encoding.UTF8 }; server.Script( scriptingOptions ); var database = new Microsoft.SqlServer.Management.Smo.Database( server, request.DatabaseName ); database.Refresh(); var bimlService = new BimlService(); var output = new Biml(); // Selectively build sections if ( request.HasConnections ) output.Connections = bimlService.GetConnections( server, database ); if ( request.HasDatabases ) output.Databases = bimlService.GetDatabases( database ); if( request.HasSchemas ) output.Schemas = bimlService.GetSchemas( database ); if (request.HasTables) { output.Tables = bimlService.GetTables( database, request.HasFactsAndDimensions ); } if (request.HasFactsAndDimensions) { output.Facts = bimlService.GetFacts( database ); output.Dimensions = bimlService.GetDimensions( database ); } return output; }