Исключение "Недостаточно памяти" в 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();