EF中的“内存不足”例外

时间:2017-10-31 12:08:32

标签: c# performance entity-framework out-of-memory edmx

为了从数据库中检索具有某些条件的数据,我使用以下代码:

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 个答案:

答案 0 :(得分:1)

请尝试这可能是有效的:

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

答案 1 :(得分:1)

您应该使用Expression<Func<TEntity, bool>>代替Func<TEntity, bool>

不同之处在于,表达式可以由EF解释为生成SQL查询,并在mssql服务器上执行它,您正在做的事情是将每个对象放入内存然后查询本地对象,具体取决于数据库的大小可能会导致内存不足,但仍然不太可能。但至少这解释了缓慢。