gpt4 book ai didi

c# - SqlQuery 上的 Entity Framework 超时

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:40 25 4
gpt4 key购买 nike

我正在使用 EF 6.1.3,并且使用其中一个存储过程填充模型超时。

var spResult = context.Stuff.SqlQuery("exec GetStuff @p0, @p2", pId, typeId )
.OrderBy(a => a.Barcode)
.ToDataSourceResult(request);

我有一个名为 GetStuff 的存储过程,它有两个参数:@id int@typeId int = null//nullable

在 SQL Profiler 中,我可以看到服务器上的 EF 正在使用正确的参数执行存储过程。
当我使用相同的参数在 SSMS 中运行存储过程时,我会在不到 1 秒的时间内得到结果(确保从 Profiler 复制粘贴)。

如果我在从 EF 调用时更改一个参数,我会立即得到结果!

简而言之:存储过程 GetStuff (1, null) 在 EF 和 SSMS 中有效,而 GetStuff(1, 1) 在 EF 中超时,但在 SSMS 中有效。

存储过程只是一个 Select,没有在 SQL 或我的 C# 代码中定义事务。

最佳答案

这看起来像是参数嗅探问题,请参阅 simple talk article

尝试将存储过程创建为

CREATE PROCEDURE GetStuff
@pid INT,
@typId INT
WITH RECOMPILE
AS
....

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

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