I would like to be able to iterate through every row in an entity table without holding every row in memory. This is a read only operation and every row can be discarded aft
Based on your last comment, I'm still confused. Take a look at both of below code.
using (var ctx = new AppContext())
{
foreach (var order in ctx.Orders)
{
Console.WriteLine(order.Date);
}
}

var constr = ConfigurationManager.ConnectionStrings["AppContext"].ConnectionString;
using (var con = new SqlConnection(constr))
{
con.Open();
var cmd = new SqlCommand("select * from dbo.Orders", con);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["Date"]);
}
}

Even though EF has few initial query, both of them execute similar query that can be seen from profiler..