asp.net-mvc - 使用 ID 的 Linq 查询返回结果缓慢(EF Core)

标签 asp.net-mvc entity-framework linq asp.net-core entity-framework-core

我有以下 linq 查询

internal List<ZipCodeInfo> GetInfoFromZipCode(string zipCode)
{
    using (DbContext context = new DbContext())
    {
        IQueryable<ZipCodeInfo> results;

        results = (from a in context.Address
                    where a.ZipCode.Equals(zipCode)
                    select new ZipCodeInfo
                    {
                        Field1 = a.Field1,
                        Field2 = a.Field2,
                        Field3 = a.Field3
                    });

        return results.ToList();
    }
}

但是查询本身需要大约 5-6 秒才能完成。我已经在 SQL 上执行了对应的查询,几乎不需要任何操作就可以完成。为什么要花那么长时间?最后的查询只返回 4 个匹配项,所以这里没什么可做的..

此查询是 Controller 类的一部分,我正在使用 ASP.NET Core 和 EntityFramework Core。

SQL 查询看起来像这样,顺便说一句。

SELECT *
FROM Address
WHERE ZipCode = '29130'

最佳答案

您可以重写上面的查询,如下所示。请立即告知我们性能。

 internal List<ZipCodeInfo> GetInfoFromZipCode(string zipCode)
    {
        using (DbContext context = new DbContext())
        {
           //disabled tracking
           context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            IQueryable<ZipCodeInfo> results;

            results = (from a in context.Address
                        where a.ZipCode.Equals(zipCode)
                        select new ZipCodeInfo
                        {
                            Field1 = a.Field1,
                            Field2 = a.Field2,
                            Field3 = a.Field3
                        });

            return results.ToList();
     }
    }

关于asp.net-mvc - 使用 ID 的 Linq 查询返回结果缓慢(EF Core),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39421314/

相关文章:

.net - Entity Framework : "ProviderName" in connection string required- all of the sudden?

c# - 带有可为空日期时间列的 Linq 插入

linq - 测试 LINQ to SQL 表达式

c# - 如何使用路由属性绑定(bind) WebAPI GET 请求中的请求模型?

asp.net-mvc - 如何在不重复代码的情况下实现业务和 View 验证?

c# - Entity Framework - 在运行时更改连接字符串(需要解释)

c# - "Grouping"字典值

asp.net-mvc - MVC5 基于声明的身份验证 - 合适的声明项

asp.net-mvc - Redis session 状态提供程序不会删除 session 放弃时的 key

c# - 这个小代码可以优化吗?