Настройте Enterprise Library в коде - PullRequest
1 голос
/ 13 января 2010

Можно ли полностью сконфигурировать блок приложения данных в корпоративной библиотеке в коде? Вместо того, чтобы иметь большой грязный файл конфигурации.

Ответы [ 2 ]

1 голос
/ 14 января 2010

Хорошо, после некоторого поиска в Google и проб и ошибок я нашел это решение, которое работает довольно хорошо. Используется поставщик 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
0 голосов
/ 13 января 2010

краткий ответ: да.

Длинный ответ: зачем вам это делать? Идея файла «большой грязный» заключается в том, что вы пишете несколько общий код, который использует интерфейсы, а затем настраиваете специфику. Хотите перейти с ORacle на SQL Server? Я сделал это, просто обновив переменную конфигурации. Да, это медвежье портирование хранимых процедур, но это работает.

...