Im在使用Linq查询的实体框架中面临一个问题。我有一个查询,当我运行它时,会给出这个异常。
"SqlException:由于此查询的估计成本(3010)超过配置的阈值3000,查询已被取消。请与系统管理员联系。“
QUERY_GOVERNOR_COST_LIMIT的服务器默认值是3000,正如它在错误中显示的那样。由于无法更改服务器的默认值,因此我希望更改它并使其更高用于该特定查询。
因此,我的问题是如何在实体框架Linq语法中设置QUERY_GOVERNOR_COST_LIMIT值。
我已经尝试并在查询之前添加了这个db.Database.SqlQuery<string>("SET QUERY_GOVERNOR_COST_LIMIT 15000");,但是它不能工作,因为如果我没有弄错,QUERY_GOVERNOR_COST_LIMIT将适用于同一个查询,而不是两个不同的查询。
发布于 2021-11-22 09:13:37
SET QUERY_GOVERNOR_COST_LIMIT正在更改当前DB连接的限制,因此您需要确保两个SQL都使用相同的连接。
using (var context = new MyDbContext())
{
// open connection
context.Database.Connection.Open();
// set limit
context.Database.ExecuteSqlCommand("SET QUERY_GOVERNOR_COST_LIMIT 15000");
// run query with same connection
var result = context.Database.SqlQuery<...>("SELECT * ");
} https://stackoverflow.com/questions/70062387
复制相似问题