1

次のコードで「接続プロパティが初期化されていません」というエラーが表示されます。

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);

その後、コードは正常に動作します。実行リーダーがエラーをスローする原因となっているプロファイルされたデータベース接続についてはどうですか?

4

1 に答える 1

1

実行リーダーがエラーをスローする原因となっているプロファイルされたデータベース接続についてはどうですか?

を作成した後はProfiledDbConnection、もうSqlConnectionではありませんね。したがって、この行:

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

効果的に:

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

...これは、クエリの実行には適していません。これが、無条件での使用が悪い考えである理由asです。代わりにキャスト式を使用していれば、より有用な例外がスローされていたでしょう。

ProfiledDbConnectionMiniProfiler のドキュメントから、 a を aと一緒に使用する方法が明確ではありませんSqlCommandProfiledDbCommand代わりに使用したい可能性が非常に高いです。

于 2013-04-30T14:57:04.853 に答える