gpt4 book ai didi

entity-framework - 带有 Entity Framework 的 ASP Web API Controller 非常缓慢和奇怪的结果

转载 作者:行者123 更新时间:2023-12-01 13:44:35 25 4
gpt4 key购买 nike

我有 3 个表OPERATORS(20 条记录),SALES(7000 条记录),SALES_DETAIL(36000 条记录)。

在 Visual Studio 2015 中使用 Entity Framework 和数据库优先方法我想创建一个 Web Api Controller ,它只返回当前打开的销售的运算符(CLOSE_DATA==null):

public  IQueryable <OPERATORS> GetOPERATORS()
{
IQueryable<OPERATORS> c = from co in db.SALES
join op in db.OPERATORS on co.ID_OP equals op.ID
where co.CLOSE_DATA == null
select op;
return c;
}

在 SQL Server Management Studio 中运行的等效 SQL 返回正确结果,0.00 毫秒内返回 3 条记录。

select o.* 
from OPERATORS o
inner join SALES c on c.ID_OP = o.id
where c.CLOSE_DATA is null

在浏览器中,api Controller 返回大量数据,浏览器几乎卡住,在 fiddler 中,答案变得非常慢,我可以看到来自 SALES_DETAIL 的数据,但我没有包含在我的查询中?

如果我更改 Controller 中的操作以返回 Long 并返回 c.Count(),结果是正确的:3。

为什么要包括 SALES_DETAIL,为什么查询这么慢?

谢谢!

最佳答案

您可以在此处尝试 2 个选项。

选项 1:您可以禁用整个项目延迟加载,如下所示。

public YourContext()
{
this.Configuration.LazyLoadingEnabled = false;
}

选项 2: 关闭 延迟加载 特定导航属性,如下所示。即通过使 SaleDetails 属性 非虚拟

关闭
public class YourModel 
{
public int Id { get; set; }
public string Name { get; set; }

public ICollection<SaleDetail> SaleDetails { get; set; }
}

这是一个对您有用的链接:Lazy Loading

关于entity-framework - 带有 Entity Framework 的 ASP Web API Controller 非常缓慢和奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com