Data Access Application Block 5.0 свободная конфигурация - PullRequest
0 голосов
/ 02 мая 2011

Я использую следующий код для настройки строки подключения:

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 Ответ

0 голосов
/ 02 мая 2011

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

Зачем вам нужно использовать фабрику баз данных?

        SqlDatabase db = new SqlDatabase("some connection string from the config");
        DbCommand cmd = db.GetSqlStringCommand(sqlStatement);
        IDataReader reader = db.ExecuteReader(cmd);
...