2016-07-15 56 views
1

运行的EF迁移内部的SQL()命令时,我正在经历一个SQL超时。SQL超时时的实体框架迁移

情况: 我正在用一张表替换一堆(> 50)表,并且需要将这些表中的数据转换成即将放入新表的表。我已经按照以下方式组织迁移:

1.创建新表。

  1. 在相同的迁移中,使用SQL()函数运行迁移数据的sql脚本。

3.将所有旧表格都放下。

目前,迁移提供了以下错误:

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. The statement has been terminated. ---> System.ComponentModel.Win32Exception (0x80004005): The wait operation timed out

错误是发生在我给他们安装的环境,它们运行没有我的参与,所以我不能手动运行单个迁移,并在中间暂停以运行SQL脚本。

有什么办法来改变超时的连接,或解决此问题得到什么?

环境:

EF 6.0代码首先

SQL Server 2012的

回答

1

您应该能够设置连接超时连接字符串中,是这样的:

Connection Timeout=180; 
+0

我们就不能更改超时只是迁移?在连接字符串中更改它会改变它的应用程序的用户以及,我不希望出现这种情况。 – AXMIM

+0

发现,使用“包管理器控制台”的时候可以覆盖码的手动连接字符串,但没有它不能如何用于自动迁移。 – AXMIM

1

见这answer

Use Configuration.cs file to set custom time out:

internal sealed class Configuration :

DbMigrationsConfiguration<ApplicationDbContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 
     ContextKey = "YourDbContext"; 

     // New timeout in seconds 
     this.CommandTimeout = 60 * 5; 
    } 
} 

使用这种方法,您可以更改超时只迁移和使用默认的连接字符串不是每个人。