Data Access Application Block 5.0 свободная конфигурация
Я использую следующий код для настройки строки подключения:
ConfigurationSourceBuilder builder = new ConfigurationSourceBuilder ();
builder.ConfigureData ()
.ForDatabaseNamed ( "TestDatabase" )
.ThatIs.ASqlDatabase ()
.WithConnectionString ( "Data Source=127.0.0.1;User Id=sa;Password=123;Initial Catalog=DataAccessExamples;" )
.AsDefault ();
var configSource = new DictionaryConfigurationSource ();
builder.UpdateConfigurationWithReplace ( configSource );
EnterpriseLibraryContainer.Current
= EnterpriseLibraryContainer.CreateDefaultContainer ( configSource );
После выполнения кода выше я ожидаю, что следующий код будет работать, но он говорит, что соединение не инициализировано, и свойство command.Connection всегда сохраняет нулевое значение.
Database database = DatabaseFactory.CreateDatabase ();
DbCommand command = database.GetSqlStringCommand ( "Select * from TT" );
DbDataReader dbReader = command.ExecuteReader ( System.Data.CommandBehavior.CloseConnection );
while (dbReader.Read ())
{
System.Diagnostics.Debug.WriteLine ( dbReader[0].ToString () );
}
Может кто-нибудь сказать мне, почему соединение не инициализируется?
Я использую приведенный выше код в проекте библиотеки и хочу настроить DAAB во время выполнения.
Спасибо
1 ответ
Решение
Во-первых, почему вы жестко кодируете строку подключения? Разве не имеет смысла иметь строку подключения в файле конфигурации для вашего приложения?
Зачем вам нужно использовать фабрику баз данных?
SqlDatabase db = new SqlDatabase("some connection string from the config");
DbCommand cmd = db.GetSqlStringCommand(sqlStatement);
IDataReader reader = db.ExecuteReader(cmd);