Login Register
 
  CodePrint  
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
  HTML 4.01 Code
  ASCII Code
 
 
Copyright (c) 2010 Seabury Design