c# - 转换 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 秒内达到性能。
解决方案
Entity Framework 使用惰性求值,这意味着简单的调用SqlQuery
实际上并不执行查询,它只是构建它。只有在实现 IQueryable/IEnumerable 时,才会执行实际查询。因此,当您调用 ToList() 时,这就是执行查询的地方。
至于为什么它很慢 - 这取决于查询本身。无法从这里的代码中分辨出来。
推荐阅读
- android-studio - Android Studio 中新 Flutter 项目中未解决的引用
- c# - C# 字体不会改变,但字体大小会改变
- r - 用其他数据框替换值作为参考
- haskell - 卡在“可配置”的haskell类中
- django - (DJANGO) NoReverseMatch 在后/
- macos - 如何更改 NSButton 复选框的颜色?
- c++ - 对于接口类,C++ 核心准则 C35“基类析构函数应该是公共的和虚拟的,或者受保护的和非虚拟的”是否错误?
- php - PHP 不应该等待第一个命令;在 sleep() 之前,这是如何完成的?
- python - 将包含元组的 pandas 列转换为字符串
- javascript - 在 iframe 中运行 Javascript 命令