DbDataReader自行关闭?

Dav*_*vid 0 c# sql-server ado.net

我有以下代码:

        var entityConnection = (System.Data.EntityClient.EntityConnection)c.Connection;
        DbConnection conn = entityConnection.StoreConnection;
        ConnectionState initialState = conn.State;

        List<Jobs> list = new List<Jobs>();

        int id = 0;
 try
        {
            if (initialState != ConnectionState.Open)
                conn.Open();

            using (DbCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = sql;
                reader = cmd.ExecuteReader();

                int count = 0;

                while (reader.Read())
                {
                    id = int.Parse(reader[0].ToString());

                    list.Add(db.Jobs.Where(x => x.JobId == id).First());
                    //count++;
                    //if (count == 150) break;

                    reader.NextResult();
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我收到一个错误说:"system.invalidoperationexception:读取器关闭时调用NextResult的无效尝试"

但事情是我没有关闭读者,但是当我删除这一行:

list.Add(db.Jobs.Where(x => x.JobId == id).First());
Run Code Online (Sandbox Code Playgroud)

一切正常!但这对我来说是无用的,因为我需要从阅读器填充一个列表对象,如果我不能这样做 - 那么我就无法阅读该表了!(ps我正在避免使用sqldatareader并使用dbdatareader,因为它与我联系使用实体框架进行上述调用)

Tho*_*que 6

你需要删除呼叫NextResult.此方法用于前进到下一个结果集,而不是下一个记录.在reader.Read()你的while循环就足够了