ExecuteStoreQuery возвращает System.Data.Objects.ObjectResult , и он напрямую запрашивает базу данных с использованием TSQL, у вас не будет потока, а будет только коллекция всех запрашиваемых объектов.
http://blogs.msdn.com/b/alexj/archive/2009/11/07/tip-41-how-to-execute-t-sql-directly-against-the-database.aspx
Если я правильно понимаю, это не то, что вам нужно.
Если вы хотите запрашивать данные каким-то образом, похожим на классический ADO.NET DataReader, вам следует запросить напрямую EntityClient , он отличается от использования Linq To Entities или ESQL, поскольку вы не проходите через ObjectContext, и запрос не материализует никакой объект!
using (EntityConnection conn = new EntityConnection("name=SampleEntities"))
{
conn.Open();
EntityCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT VALUE c FROM SampleEntities.Contacts AS c WHERE c.FirstName='Robert'";
using (EntityDataReader rdr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.CloseConnection))
{
while (rdr.Read())
{
var firstname = rdr.GetString(1);
var lastname = rdr.GetString(2);
}
}
conn.Close();
}
Это полезно, если вам нужно просто запросить некоторые данные только для чтения, которые нужно каким-то образом отобразить, это ничем не отличается от создания любой другой команды провайдера и установки ее CommandText, но здесь CommandTextявляется выражением Entity SQL, и вы, очевидно, запрашиваете EDM, поэтому я думаю, что именно поэтому вы используете EF.
Надеюсь, это поможет