One of the new Enterprise Library 5 improvements is a new fluent configuration API.
In this post, I'll explain the subject and then show how to use the fluent configuration API with the Data Access Application Block.
Fluent Configuration API
There are times that we would like to configure our application at runtime without using a configuration file such as web.config or app.config. In order to achieve that, we can use the new fluent configuration API that was shipped with Enterprise Library 5. The API can be used to configure the core, instrumentation and all of the application blocks not including the Validation and Policy Injection application blocks. Also, if you already have an Enterprise Library configuration in your config file, you will be able to merge the configuration you created in runtime to it or update it.
Using the Fluent Configuration API
In order to use the fluent configuration API, you need to create a ConfigurationSourceBuilder
which is the main class to build a runtime configuration. Each feature in Enterprise Library, such as the application blocks for example, provides extension methods for this class which enables us to use the API in the same manner. The use of the extension methods is very intuitive and easy. The ConfigurationSourceBuilder
class is located in the Microsoft.Practices.EnterpriseLibrary.Common.Configuration DLL and you need to reference it. In order to use the fluent configuration extension methods for every application block, you need to add a reference to that application block’s DLL also.
DAAB Fluent Configuration API Example
Let's look at a DAAB fluent configuration API example:
public void ConfigureDAAB()
{
var configBuilder = new ConfigurationSourceBuilder();
configBuilder.ConfigureData()
.ForDatabaseNamed("School")
.ThatIs
.ASqlDatabase()
.WithConnectionString(ConnectionString)
.AsDefault();
var configSource = new DictionaryConfigurationSource();
configBuilder.UpdateConfigurationWithReplace(configSource);
EnterpriseLibraryContainer.Current =
EnterpriseLibraryContainer.CreateDefaultContainer(configSource);
}
What you see here is that I created a ConfigurationSourceBuilder
instance.
Then I used the fluent configuration API to configure it. I instructed the data configuration to be a SQL Server provider (using the ASqlDatabase
method), gave it a connection string and set it to be my default database.
Then I created a DictionaryConfigurationSource
which holds my DAAB configuration when I use the UpdateConfigurationWithReplace
method in order to update the configurations or if it exists to replace it.
In the end, I set the EnterpriseLibraryContainer
to be configured from that source.
Summary
Enterprise Library 5 comes with a new fluent configuration API which enables us to configure our EnterpriseLibraryContainer
in runtime.
That API is very intuitive and easy to learn. I showed a straight forward example of how to configure the default database for the Data Access Application Block.