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