Исключение "Недостаточно памяти" в EF

Для получения данных с некоторыми критериями из базы данных я использую этот код:

IEnumerable<Object> iEnumuDeclarations2 = ObjectDAO.Find(d => d.id == 1).ToList();

но это слишком медленно И в конце происходит исключение из памяти

public IEnumerable<TEntity> Find(Func<TEntity, bool> predicate)
{
    return DataContext.CreateObjectSet<TEntity>().Where<TEntity>(predicate);
} 

2 ответа

Решение

Вы должны использовать Expression<Func<TEntity, bool>> вместо Func<TEntity, bool>

Разница в том, что EF может интерпретировать выражение, чтобы сгенерировать SQL-запрос и выполнить его на сервере mssql; главное, что вы делаете, это помещаете каждый отдельный объект в память, а затем запрашиваете локальные объекты, в зависимости от размера вашего базы данных это может привести к нехватке памяти, но все еще маловероятно. Но, по крайней мере, это объясняет медлительность.

Пожалуйста попробуйте это может быть это работает:

var iEnumuDeclarations2  = declaration_importationDAO.Where(d => d.id_service == id_service).ToList();
Другие вопросы по тегам