2016-12-30 43 views
1

我想使用EF-Migrations,因此必須使用Update-Database。由於我在項目的主文件夾中使用了幾個.mdf文件,這些文件也應該在調試時使用,我在App.config中使用了幾個ConnectionStringsUpdata-Database -ConnectionStringName已修改| DataDirectory |

樣本ConnectionString

<add name="DataContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Data Source=(LocalDB)\mssqllocaldb;Database=Database;Integrated Security=True;AttachDbFilename=|DataDirectory|\Database.mdf"/> 

因爲在調試|DataDirectory|Project-Root\bin\Debug我寫的改變|DataDirectory|Project-Root\app_data功能:

 #if DEBUG 
     string path = Directory.GetParent(Environment.CurrentDirectory).Parent?.FullName + "\\app_data"; 
     AppDomain.CurrentDomain.SetData("DataDirectory", path); 
     #endif 

的問題是,|DataDirectory|當我打電話沒有更新Update-Database,因此找不到.mdf文件。

我發現一個very similar question沒有答案/解決方案,但它似乎沒有得到那麼多的關注。

那麼,有沒有一個乾淨的方式來處理這個或更好的做到這一點呢?我確實需要將項目輕鬆移植,這意味着我必須能夠複製文件夾並讓另一個VS實例運行它。

回答

1

|DataDirectory|概念更適用於web項目,並考慮Debug正在Project-Root\bin\Debug下運行,那麼我猜你的應用程序不是一個web應用程序。

最簡單的答案就是在項目中設置.mdf文件爲Copy if newerAlways copy。這樣,當您從VS執行應用程序時,您將始終將.mdf文件置於正確的文件夾內。

+0

在這一點上,我仍在嘗試,但這最終將成爲一個Web項目。我不知道'| DataDirectory |'只是爲了這些。 但我明白Web項目不會在'Project-Root \ bin \ Debug'下運行,是嗎? –

+1

Web項目支持| DataDirectoy | 「開箱即用」使用「App_Data」文件夾,而其他項目需要一些操作(就像你使用AppDomain一樣)。據我所知,Web應用程序的某些部分仍然從'bin \ [debug | release]'fodlers運行。 您可以在這裏閱讀更多有關App_Data'文件夾: https://msdn.microsoft.com/en-us/library/aa478948.aspx 只需在該頁面中查找「App_Data」即可。 –