2013-02-20 150 views
6

我最初有一個EF代碼先建立了連接到現有數據庫。這工作正常。EF代碼優先 - 創建數據庫 - 用戶登錄失敗

然後我對POCO進行了一些更改,並決定讓代碼先爲我生成新的數據庫。

獲取錯誤:無法打開登錄請求的數據庫\「MyDatabase \」。登錄失敗。\ r \ n用戶'DOMAIN \ username'登錄失敗。

我刪除了舊的數據庫,但我並沒有更改連接字符串:我的本地機器上

<add name="MyDatabaseContext" connectionString="Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 

我有一個SQL Server 2008實例和我的域用戶名是「系統管理員」的角色。

我試過各種數據庫初始值設定項,並且我得到了所有相同的錯誤。它在第一次查詢調用時失敗,但代碼首先不會創建數據庫。我可以將連接字符串指向舊數據庫的副本(在更改之前),並且它將正常運行,但即使我指定了DropCreateDatabaseAlways構造器,它仍舊是我的舊模式。這是沒有道理的,而不是遵循我在家用機器上使用代碼的經驗。

使用Visual Studio 2012和EF5。

我需要能夠先讓代碼生成一個新的數據庫。到底是怎麼回事?

回答

8

找到了我在我的DbContext類中有一個靜態構造函數,它重寫了數據庫初始值設定項。

static MyDbContext() 
     { 
      Database.SetInitializer<MyDbContext>(null); 
     } 

代碼第一反向工程將把這個,所以你不要覆蓋你現有的數據庫。當我轉身時,我並沒有想到它。

希望這會幫助別人。