如何在连接字符串中设置实体框架 4 CommandTimeout?

Posted

技术标签:

【中文标题】如何在连接字符串中设置实体框架 4 CommandTimeout?【英文标题】:How to set Entity framework 4 CommandTimeout in connection string? 【发布时间】:2013-06-09 20:20:04 【问题描述】:

是否可以在app.config的连接字符串中指定commandTimeout?

根据这个 SO 问题:Entity Framework with mysql - Timeout Expired while Generating Model 以下应该可以工作:

  <add name="DataEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=XXXX;initial catalog=XXXXX2;persist security info=True;user id=XXXXX;password=XXXXX;multipleactiveresultsets=True;App=EntityFramework;Default Command Timeout=12;&quot;" providerName="System.Data.EntityClient" />

但是,它不起作用 - 抛出异常,指出 Default Command Timeout 不是连接字符串的已知部分。

如果我使用以下代码直接在代码中执行此操作,则可以正常工作:

        var db = new DataEntities(); // ObjectContext
        db.CommandTimeout = 1;

有人知道如何在配置中使用连接字符串或其他本机选项设置 commandTimeout 吗?

谢谢。

【问题讨论】:

可能值得在问题中添加 MySQL 标签,因为这似乎是 MySQL 特有的功能? 不,底层数据库是 MS SQL 2008 R2。 啊,这让事情变得更清楚了。您帖子中的链接是特定于 MySQL 的。 谢谢@qujck。我以某种方式错过了(即使它直接在标题中!)。所以我想SQL server 没有办法,这是一种耻辱。请调整您的答案,以便我将其标记为正确答案。 【参考方案1】:

我不相信可以在连接字符串中设置命令超时。

Command 是连接的不同对象。命令可以有一个连接,但它有自己的超时时间,您可以设置。

您上面的示例链接是特定于 MySQL 的 ...

见here

【讨论】:

感谢您的提示。不幸的是,它既不是Command 也不是Connect Timeout。还是一样的例外。你的意思可能是Connection Timeout=60;。但是,连接超时的解除与查询应等待完成的时间无关(这是 CommandTimeout 应该做的)。

以上是关于如何在连接字符串中设置实体框架 4 CommandTimeout?的主要内容,如果未能解决你的问题,请参考以下文章

如何在实体框架中设置默认值

如何首先在实体框架代码中设置身份主键的起始值?

在实体框架中设置数据库超时

可以在实体框架中设置列排序

在实体框架中设置 HTML <input> step 属性

如何在 .Net 框架 4.0.30319 中设置 HttpCookie Samesite 属性?