将存储过程的结果作为IEnumerable返回

时间:2013-07-30 20:33:59

标签: c# sql ienumerable

我不确定如何正确完成此操作 - 我有一个存储过程,我想将结果作为IEnumberable返回

  public IEnumerable GetGuids(int id)
    {
        SqlCommand _command = new SqlCommand("storedProc");
        _command.CommandType = CommandType.StoredProcedure;
        _command.Parameters.AddWithValue("@ItemID", id);

        return _command.ExecuteReader();
    }

当我运行时,我得到:ExecuteReader: Connection property has not been initialized.

3 个答案:

答案 0 :(得分:4)

您的SqlCommand没有相应的连接。使用:

_command.Connection = conn;

或使用conn.CreateCommand(...)

创建SqlCommand

答案 1 :(得分:1)

使用SqlConnection初始化SqlCommand并确保SqlConnection已打开。 之后,ExecuteReader提供了一个SqlDataReader,您必须通读读取器并读取值

SqlDataReader reader = _command.ExecuteReader();

while(reader.Read()
{
   // readvalue of reader["columname"] and insert into a list or yield return it.
}

答案 2 :(得分:0)

传递连接对象,如GetGuids(int id, SqlConnection conn)

 SqlCommand cmd = new SqlCommand ("query", conn);