首页 > 解决方案 > 转换 IEnumerable 时的 Sql 超时列出在 C# 实体框架中

问题描述

使用以下代码在 2 秒内从数据库中获取大约 2800 条记录

public IEnumerable<T> ExecWithStoreProcedure(string query, params object[] parameters)
{
        return db.Database.SqlQuery<T>(query, parameters);
}

但是当转换为列表时,会出现 Sql Timeout。我正在将 EntityFramework 与 SQL 数据库一起使用。如何在 15 秒内达到性能。

标签: c#sql.netentity-frameworkienumerable

解决方案


Entity Framework 使用惰性求值,这意味着简单的调用SqlQuery实际上并不执行查询,它只是构建它。只有在实现 IQueryable/IEnumerable 时,才会执行实际查询。因此,当您调用 ToList() 时,这就是执行查询的地方。

至于为什么它很慢 - 这取决于查询本身。无法从这里的代码中分辨出来。


推荐阅读