【问题标题】:Entity Framework Linq SET QUERY_GOVERNOR_COST_LIMIT实体框架 Linq SET QUERY_GOVERNOR_COST_LIMIT
【发布时间】:2021-12-31 20:29:42
【问题描述】:

我在使用 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 将适用于同一个查询而不是 2 个不同的查询

【问题讨论】:

    标签: c# sql-server database entity-framework linq


    【解决方案1】:

    SET QUERY_GOVERNOR_COST_LIMIT 正在更改当前数据库连接的限制,因此您需要确保两个 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 * ");
    
    } 
    

    【讨论】:

    • 尽管这并没有解决我的问题,但我将其标记为正确答案,因为问题似乎是由不同的事情引起的,因为有时这个解决方案和我的解决方案有效,有时无效。
    猜你喜欢
    • 2017-07-07
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2013-07-29
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多