使用带有迷你探查器的SqlCommand时,尚未初始化连接

时间:2013-04-30 14:51:19

标签: c# sqlcommand mvc-mini-profiler

我收到错误“连接属性尚未初始化”,并带有以下代码:

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

然后代码工作正常。什么是导致我的执行读取器抛出错误的profiled数据库连接?

1 个答案:

答案 0 :(得分:1)

  

导致执行读取器抛出错误的profiled数据库连接是什么?

创建ProfiledDbConnection后,它不再是SqlConnection,是吗?所以这一行:

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

实际上是:

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

...这对于执行查询来说并不是个好兆头。这就是为什么无条件地使用as是一个坏主意 - 如果您使用了强制转换表达式,则会抛出更有用的异常。

我从MiniProfiler文档中不清楚您如何使用ProfiledDbConnection SqlCommand。您很可能想要使用ProfiledDbCommand