【问题标题】:How do you set Command Timeout in Linqpad?你如何在 Linqpad 中设置命令超时?
【发布时间】:2012-01-16 22:36:50
【问题描述】:

我最近开始使用 LinqPad,并购买了自动完成选项,我真的很喜欢它。这是一个很棒的产品!

我想问我是否有办法控制在 LinqPAD 中查询 SQL Server 数据库时使用的命令超时(我使用的是 c# 语句)?我看不到我们在哪里可以访问实际的连接字符串,而且我有一些大型查询报告正在超时。超时时间似乎是硬编码为 30 秒。

提前感谢您的帮助!

【问题讨论】:

    标签: timeout linqpad command-timeout


    【解决方案1】:

    我已经运行了几分钟且从未出现命令超时的查询。也就是说,这就是你如何改变它......


    您在UserQuery 中执行的所有工作。 CommandTimeout 是它的属性。

    this.CommandTimeout = 60;
    

    查看this 下的所有属性。它使您可以很好地了解您可以做的一些事情。

    【讨论】:

    • 谢谢! (特别是对于几乎立即的响应!(因为没有检查“这个”而自责!)(考虑到我每天用自己的代码做一百万次!)无论如何,它工作得很好!
    • 这是一个不错的功能,我不知道为什么没有更好地记录它。
    • @user1090088 - 你介意接受符合 SO 风格的答案:stackoverflow.com/faq#howtoask 吗?谢谢。
    • 默认情况下,LINQPad 将命令超时设置为无限。如果您遇到超时错误,我怀疑是连接(而不是命令)超时,或者超时与网络或服务器有关。
    • @Joe Albahari,当/如果LinqPad connects to DB using an EF-library 时,我确实会超时。有没有办法将 EF 库的默认超时设置为无限。 (My answer 已经为命令窗口显示了一种特别的方式。)
    【解决方案2】:

    @DaveShaw's answer 中所述,在使用“常规”连接在 LinqPAD 中查询 SQL Server 数据库时,您可以使用:

    this.CommandTimeout = 60
    

    但是,当LinqPad connects to DB using an EF-library 时,此属性不可用。 使用this.CommandTimeout 会导致:

    “UserQuery”不包含“CommandTimeout”的定义,并且找不到接受“UserQuery”类型的第一个参数的扩展方法“CommandTimeout”(按 F4 添加 using 指令或程序集引用)

    一些令人费解的问题和这个答案about EF time-outs in general 导致我在 EF 连接上使用它:

    (this as IObjectContextAdapter).ObjectContext.CommandTimeout = 60;
    

    【讨论】:

      【解决方案3】:

      对于 Entity Framework Core 连接,改用以下属性。
      this.Database.SetCommandTimeout(120);

      【讨论】:

        猜你喜欢
        • 2012-05-17
        • 2014-08-13
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        • 2019-09-20
        • 2023-03-22
        • 2016-08-26
        • 1970-01-01
        相关资源
        最近更新 更多