EF-Migrationsを使用したいので、Update-Databaseを使用する必要があります。デバッグ時に使用するプロジェクトのメインフォルダに.mdfファイルをいくつか使用しているので、ConnectionStrings
をApp.config
にEFで使用しています。Updata-Database -ConnectionStringNameが変更された| DataDirectory |
サンプルConnectionString
:問題は私が呼ぶとき|DataDirectory|
が更新されないということである
#if DEBUG
string path = Directory.GetParent(Environment.CurrentDirectory).Parent?.FullName + "\\app_data";
AppDomain.CurrentDomain.SetData("DataDirectory", path);
#endif
:
<add name="DataContext"
providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDB)\mssqllocaldb;Database=Database;Integrated Security=True;AttachDbFilename=|DataDirectory|\Database.mdf"/>
|DataDirectory|
のデバッグ中に、私はProject-Root\app_data
に|DataDirectory|
を変更する関数を書いたProject-Root\bin\Debug
あるのでUpdate-Database
となり、.mdfファイルが見つかりません。
回答/解決策なしでvery similar questionが見つかりましたが、それほど注目されていないようです。
これを処理するためのきれいな方法がありますか、最初にこれを行うにはより良い方法がありますか?私は簡単に移植可能なプロジェクトが必要です。つまり、フォルダをコピーして別のVSインスタンスで実行できるようにする必要があります。
この時点で私はまだ試していますが、これは最終的にウェブプロジェクトになります。私は、 '| DataDirectory |'がこれらのためだけに想定されていることを知らなかった。 しかし、私は正しくWebプロジェクトが 'Project-Root \ bin \ Debug'の下で実行されないことを理解していますか? –
Webプロジェクトは、| DataDirectoy |他のプロジェクトは(AppDomainで行ったように)いくつかの操作が必要ですが、「App_Data」フォルダを使って「すぐに使える」ものです。私が知る限り、ウェブアプリケーションのいくつかの部分は 'bin \ [debug | release]' fodlersから実行されます。 'App_Data'フォルダの詳細は、 https://msdn.microsoft.com/en-us/library/aa478948.aspx をご覧ください。そのページの「App_Data」を探してください。 –