改善使用实体框架时的搜索功能延迟
Posted
技术标签:
【中文标题】改善使用实体框架时的搜索功能延迟【英文标题】:Improve search functionality delay while using entity framework 【发布时间】:2018-06-05 12:53:52 【问题描述】:如果我使用 AsQueryable 准备查询并在实体框架中动态附加搜索条件,与 SQL 查询相比,它需要很长时间。是否有任何替代方法可以在实体框架中创建动态查询?
谢谢 杰里米
【问题讨论】:
把SQL放到存储过程中用EF调用?AsQueryable()
也只是生成 SQL。阅读How to Ask,显示包含生成的SQL 的minimal reproducible example,并将执行计划与您手工制作的SQL 进行比较。
【参考方案1】:
写原始sql怎么样?这可能不是最好的选择,但它是一个替代方案.. 必须比较时间
你可以用这样的东西来完成这项工作。
//an entity to return
AltPedVendaModel ret = new AltPedVendaModel();
var conn = DbContext.Database.GetDbConnection();
try
conn.Open();
using (var command = conn.CreateCommand())
string query = $"select * from .......";
command.CommandText = query;
DbDataReader reader = command.ExecuteReader();
if (reader.HasRows)
while (reader.Read())
//read line to line
ret = new AltPedVendaModel
IsOk = reader.GetBoolean(0),
Awb = reader.GetString(1),
Invoice = reader.GetString(2),
Po = reader.GetString(3),
Obs = reader.GetString(4),
Frete = reader.GetDecimal(5),
;
reader.Dispose();
catch (Exception ex)
finally
conn.Close();
return ret;
【讨论】:
你也可以使用这个 cote 来运行存储过程。如果你的 SP 不返回行,请使用 command.ExecuteNonQuery() 而不是 command.ExecuteReader()。以上是关于改善使用实体框架时的搜索功能延迟的主要内容,如果未能解决你的问题,请参考以下文章