2016-12-30 3 views
1

EF-Migrationsを使用したいので、Update-Databaseを使用する必要があります。デバッグ時に使用するプロジェクトのメインフォルダに.mdfファイルをいくつか使用しているので、ConnectionStringsApp.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インスタンスで実行できるようにする必要があります。

答えて

1

|DataDirectory|の概念はWebプロジェクトのほうが多く、DebugProject-Root\bin\Debugで実行されていると考えているので、あなたのアプリケーションはWebアプリケーションではないと思います。

最も簡単な答えは、.mdfファイルをプロジェクト内でCopy if newerまたはAlways copyに設定することです。そうすれば、VSからアプリケーションを実行するときに、常に.mdfというファイルが右側のフォルダに格納されます。

+0

この時点で私はまだ試していますが、これは最終的にウェブプロジェクトになります。私は、 '| DataDirectory |'がこれらのためだけに想定されていることを知らなかった。 しかし、私は正しくWebプロジェクトが 'Project-Root \ bin \ Debug'の下で実行されないことを理解していますか? –

+1

Webプロジェクトは、| DataDirectoy |他のプロジェクトは(AppDomainで行ったように)いくつかの操作が必要ですが、「App_Data」フォルダを使って「すぐに使える」ものです。私が知る限り、ウェブアプリケーションのいくつかの部分は 'bin \ [debug | release]' fodlersから実行されます。 'App_Data'フォルダの詳細は、 https://msdn.microsoft.com/en-us/library/aa478948.aspx をご覧ください。そのページの「App_Data」を探してください。 –

関連する問題