在代码中配置企业库

时间:2010-01-13 13:49:12

标签: configuration enterprise-library

是否可以完全使用代码在Enterprise Library中配置数据应用程序块? 而不是拥有大杂乱的配置文件。

2 个答案:

答案 0 :(得分:1)

好的,经过一些googeling和一些试验和错误后,我想出了一个非常好的解决方案。它使用System.Data.SQLClient提供程序。 只需提供一个连接字符串:

            Dim databaseSettings As Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings
            Dim connStringSection As System.Configuration.ConnectionStringsSection = New System.Configuration.ConnectionStringsSection()
            Dim dictDataSource As Microsoft.Practices.EnterpriseLibrary.Common.Configuration.DictionaryConfigurationSource
            Dim dbProvider As Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DbProviderMapping
            Dim dbFactory As DatabaseProviderFactory
            Dim database As Microsoft.Practices.EnterpriseLibrary.Data.Database

            databaseSettings = New Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings()
            connStringSection = New System.Configuration.ConnectionStringsSection()
            dictDataSource = New Microsoft.Practices.EnterpriseLibrary.Common.Configuration.DictionaryConfigurationSource()
            dbProvider = New Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DbProviderMapping(Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DbProviderMapping.DefaultSqlProviderName, GetType(Sql.SqlDatabase))

            connStringSection.ConnectionStrings.Add(New System.Configuration.ConnectionStringSettings("DBConnectionString", connectionString, "System.Data.SqlClient"))
            databaseSettings.ProviderMappings.Add(dbProvider)
            databaseSettings.DefaultDatabase = "DBConnectionString"

            'Add Database Settings to Dictionary
            dictDataSource.Add(Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings.SectionName, databaseSettings)
            'Add Connection String to Dictionary
            dictDataSource.Add("connectionStrings", connStringSection)

            dbFactory = New DatabaseProviderFactory(dictDataSource)
            database = dbFactory.Create("DBConnectionString")
            database.CreateConnection()

            Return database

答案 1 :(得分:-1)

简短回答:是的。

答案很长:你为什么要那样做? “大乱”文件的整个想法是你编写一些使用接口然后配置细节的通用代码。想从ORacle切换到SQL Server吗?我只是通过更新配置变量来完成它。是的,这是一个移植存储过程的熊,但它确实有效。