EF 中的异常 "Out of Memory"

Exception "Out of Memory" in 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);
} 

请尝试这可能有效:

var iEnumuDeclarations2  = declaration_importationDAO.Where(d => d.id_service == id_service).ToList();

您应该使用 Expression<Func<TEntity, bool>> 而不是 Func<TEntity, bool>

区别在于,EF 可以解释表达式生成一个 SQL 查询,并在 mssql 服务器上执行它,你所做的本质上是将每个对象放入内存,然后查询本地对象,根据数据库的大小,它可能会导致内存不足异常,但仍然不太可能。但这至少解释了缓慢。