Imports System Imports Microsoft.Practices.EnterpriseLibrary.Configuration Imports Microsoft.Practices.EnterpriseLibrary.Data Imports Microsoft.Practices.EnterpriseLibrary.Data.Configuration Namespace EnterpriseLibrary.Extensions.Data Public Enum DBProviderType SqlServer Oracle End Enum Public NotInheritable Class DynamicDatabaseFactory Friend Const InstanceName As String = "dynamicDAAB" Friend Const ConnectionStringName As String = "dynamic" Friend Const SqlTypeName As String = "Sql Server" Friend Const OracleTypeName As String = "Oracle" Friend Const ConfigName As String = "dataConfiguration" Friend Sub New() End Sub Public Shared Function CreateDatabase(ByVal server As String, ByVal database As String, _ ByVal provider As DBProviderType) As Database Return CreateDatabase(GetConnectionStringData(server, database), _ GetTypeFromProvider(provider)) End Function Public Shared Function CreateDatabase(ByVal server As String, _ ByVal database As String, ByVal userId As String, ByVal password As String, _ ByVal provider As DBProviderType) As Database Return CreateDatabase(GetConnectionStringData(server, database, userId, password), _ GetTypeFromProvider(provider)) End Function Public Shared Function CreateDatabase(ByVal connectionData As ConnectionStringData, _ ByVal providerData As DatabaseTypeData) As Database Dim settings As DatabaseSettings = New DatabaseSettings settings.DatabaseTypes.Add(providerData) settings.ConnectionStrings.Add(connectionData) Dim instanceData As InstanceData = New InstanceData instanceData.ConnectionString = connectionData.Name instanceData.DatabaseTypeName = providerData.Name instanceData.Name = "dynamicDAAB" settings.Instances.Add(instanceData) Dim configDictionary As ConfigurationDictionary = New ConfigurationDictionary configDictionary.Add("dataConfiguration", settings) Dim context As ConfigurationContext = _ ConfigurationManager.CreateContext(configDictionary) Return (New DatabaseProviderFactory(context)).CreateDatabase("dynamicDAAB") End Function Friend Shared Function SqlTypeData() As DatabaseTypeData Dim typeData As DatabaseTypeData = New DatabaseTypeData typeData.Name = SqlTypeName typeData.TypeName = "Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase," & _ " Microsoft.Practices.EnterpriseLibrary.Data" Return typeData End Function Friend Shared Function OracleTypeData() As DatabaseTypeData Dim typeData As DatabaseTypeData = New DatabaseTypeData typeData.Name = OracleTypeName typeData.TypeName = "Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase," & _ " Microsoft.Practices.EnterpriseLibrary.Data" Return typeData End Function Friend Shared Function GetConnectionStringData(ByVal server As String, _ ByVal database As String) As ConnectionStringData Dim connectionStringData As ConnectionStringData = GetConnectionStringData() connectionStringData.Parameters.Add(New ParameterData("Server", server)) connectionStringData.Parameters.Add(New ParameterData("Database", database)) connectionStringData.Parameters.Add(New ParameterData("Integrated Security", "True")) Return connectionStringData End Function Friend Shared Function GetConnectionStringData(ByVal server As String, _ ByVal database As String, ByVal userId As String, ByVal password As String) As ConnectionStringData Dim connectionStringData As ConnectionStringData = GetConnectionStringData() connectionStringData.Parameters.Add(New ParameterData("Server", server)) connectionStringData.Parameters.Add(New ParameterData("Database", database)) connectionStringData.Parameters.Add(New ParameterData("User Id", userId)) connectionStringData.Parameters.Add(New ParameterData("password", password)) Return connectionStringData End Function Friend Shared Function GetConnectionStringData() As ConnectionStringData Dim connectionStringData As ConnectionStringData = New ConnectionStringData connectionStringData.Name = ConnectionStringName Return connectionStringData End Function Friend Shared Function GetTypeFromProvider(ByVal provider As DBProviderType) As DatabaseTypeData Select Case provider Case DBProviderType.SqlServer Return SqlTypeData() Case DBProviderType.Oracle Return OracleTypeData() Case Else Return Nothing End Select End Function End Class End Namespace