2016-07-15 53 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; 
    } 
} 

使用這種方法,您可以更改超時只遷移和使用默認的連接字符串不是每個人。