バッチ処理等で大量データなどを出力する場合、 LINQ to Entity や EntitySQL ObjectQuery では一端データをメモリにため込んでしまうため、パフォーマンスに問題が発生する可能性があります。

その場合は、 EntityClient 名前空間のクラス EntityDataReader を使用して データソースに順次アクセス(Forward-Only) することで、メモリの消費を抑えることができます。

動作の確認は、.NET3.5SP1のEntityFramework1 を使用しています。

下の例では Accountというエンティティの一覧を取得して、コンソールに出力しています。EntityCommandに指定するのはEntitySQLです。

static void EntityDataReaderTest()
{
    using (EntityConnection cn = new EntityConnection("name=TestEntities"))
    {
        string sql = "SELECT VALUE Account from TestEntities.Account";
        EntityCommand cmd = cn.CreateCommand();
        cmd.CommandText = sql;
        cmd.CommandType = System.Data.CommandType.Text;
        cn.Open();
        using (EntityDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess))
        {
            while (reader.Read())
            {
                Console.WriteLine(reader["name"] as string);
            }
        }
    }
}

説明は以上です。指摘点などありましたらご連絡ください。