c# - Entity Framework 性能问题

标签 c# .net asp.net-mvc performance entity-framework

我遇到了以下查询需要大约 700 毫秒才能执行的问题。它在一个循环中,被调用了 100 多次,所以它需要很长时间。

型号:

public class ReleaseDates
{
    public int Id { get; set; }
    public string MovieName { get; set; }
    public string Country { get; set; }
    public DateTime ReleaseDate { get; set; }
    public string AlternateSource { get; set; }
}

查询:

public async Task<List<ReleaseDates>> GetReleaseDatesAsync(string movieName)
{
    return await Db.ReleaseDates.Where(x => x.MovieName == movieName && string.IsNullOrEmpty(x.AlternateSource)).ToListAsync();
}

有什么建议可以加快速度吗?

最佳答案

摆脱循环。那就是问题所在。您正在向数据库发送大量查询。

将您要搜索的所有电影名称存储在一个列表中,并在其中进行包含。

public async Task<List<ReleaseDates>> GetReleaseDatesAsync(List<string> movieNames)
{
    //movie names that you're searching for - movieNames

    return await Db.ReleaseDates.Where(x => movieNames.Contains(x.MovieName) && string.IsNullOrEmpty(x.AlternateSource)).ToListAsync();

}

如果您想获取“Ant Moon”、“GodZippa”、“SuperWan”的发布日期,您的列表将包含这些字符串,就是这样。

进一步阅读:http://blogs.msdn.com/b/alexj/archive/2009/03/26/tip-8-writing-where-in-style-queries-using-linq-to-entities.aspx

关于c# - Entity Framework 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051523/

相关文章:

c# - 如何使用 C#(Windows 窗体)启用控件的双缓冲?

.net - 添加节点后自动对TreeView进行排序

c# - Web API 第二次请求数据错误

c# - 将 IME 放在派生自 Control 的自定义文本框中

c# - 将收集数据从 HTML/Razor 表单发送/发布到 MVC 操作参数模型

c# - 具有多个 IP 地址的网络接口(interface)上的 WCF Web 服务发现

c# - 通过自定义属性 (json.net) 从序列化中排除属性

c# - 在调试中的 ASP.NET MVC 应用程序中使用时 dll 中 exe 的路径

c# - 在 Razor 中,如何打印带分隔符的循环?

c# - KnockOut.js 与 Asp.net mvc