我想使用EF-Migrations,因此必須使用Update-Database。由於我在項目的主文件夾中使用了幾個.mdf文件,這些文件也應該在調試時使用,我在App.config
中使用了幾個ConnectionStrings
。Updata-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實例運行它。
在這一點上,我仍在嘗試,但這最終將成爲一個Web項目。我不知道'| DataDirectory |'只是爲了這些。 但我明白Web項目不會在'Project-Root \ bin \ Debug'下運行,是嗎? –
Web項目支持| DataDirectoy | 「開箱即用」使用「App_Data」文件夾,而其他項目需要一些操作(就像你使用AppDomain一樣)。據我所知,Web應用程序的某些部分仍然從'bin \ [debug | release]'fodlers運行。 您可以在這裏閱讀更多有關App_Data'文件夾: https://msdn.microsoft.com/en-us/library/aa478948.aspx 只需在該頁面中查找「App_Data」即可。 –