2013-04-30 3 views
0

Я получаю ошибку «свойство Connection не инициализирован» со следующим кодом:соединения не был инициализирован при использовании SqlCommand с мини-профайлер

DbConnection connection = new SqlConnection(connStr); 
connection.Open(); 
connection = new StackExchange.Profiling.Data.ProfiledDbConnection(connection, MiniProfiler.Current); 
SqlCommand command = new SqlCommand("GetLanguages", connection as SqlConnection); 
command.CommandType = CommandType.StoredProcedure; 
command.CommandTimeout = 240; 
command.ExecuteReader(); 

, когда он попадает в command.ExecuteReader() ; линия.

Если удалить строку

connection = new StackExchange.Profiling.Data.ProfiledDbConnection(connection, MiniProfiler.Current); 

то код работает отлично. Что это такое о профилированном соединении db, которое заставляет моего исполнятеля читать ошибку?

ответ

1

Что это такое с профилированным подключением db, которое заставляет моего исполнятеля читать ошибку?

Ну, после создания ProfiledDbConnection, это уже не SqlConnection, не так ли? Так эта линия:

SqlCommand command = new SqlCommand("GetLanguages", connection as SqlConnection); 

эффективно:

SqlCommand command = new SqlCommand("GetLanguages", null); 

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

Мне не ясно, из документации MiniProfiler, как вы собираетесь использовать ProfiledDbConnection с SqlCommand. Вы, скорее всего, захотите использовать ProfiledDbCommand.

+0

Большое спасибо. Итак, второй вопрос, если вы добрый ... Мини-профилировщик рекламируется как работающий с SqlConnection, и у меня есть куча устаревшего кода, который я пытаюсь профилировать. Полный SqlCommands и т. Д. Каков рекомендуемый способ профилирования этого кода? –

+1

@GilesRoberts: Как я уже сказал в ответ: «Мне не ясно, из документации MiniProfiler, как вы собираетесь использовать« ProfiledDbConnection »с помощью' SqlCommand'. Я никогда не использовал MiniProfiler. –

Смежные вопросы