编辑:请不要假设并随意说它的副本,请检查并验证自己。当你立即downvote并说它重复时,这对用户没有帮助。那些回应没有做我正在做的事情。我已经尝试过了。
而不是在70万条记录中获得OOM,而是在800k记录中完成。所以这种反应没有帮助。
我正在尝试通过SP从数据库中检索大量的行,并且当我的类Object达到某个限制时,我继续在reader.Read()上获得Out of Memory Exception。
SqlCommand cmd = new SqlCommand("usp_GetTonofData", connection);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters[1].Value = "Blah";
cmd.Parameters[2].Value = "foo";
cmd.CommandTimeout = 1000;
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (reader.Read())
{
object[] values = new object[reader.FieldCount];
reader.GetValues(values);
OOM Exception occurs here around the 700k records mark ---> var category = new DataClass()
{
Prop1 = values[0].ToString(),
Prop2 = Convert.ToDateTime(values[1]).ToString("MM/dd/yyyy"),
Prop3 = Convert.ToDateTime(values[2]).ToString("MM/dd/yyyy"),
Prop4 = Convert.ToDateTime(values[3]).ToString("MM/dd/yyyy"),
Prop5 = values[4].ToString(),
Prop6 = values[5].ToString(),
Prop7 = values[28].ToString(),
Prop8 = values[29].ToString(),
Prop9 = values[30].ToString(),
Prop10 = values[31].ToString(),
Prop11 = values[32].ToString(),
Prop12 = values[33].ToString(),
};
storedProcedureList.Add(category);
}
connection.Close();
connection.Dispose();
}
return storedProcedureList;