2016-04-19 4 views
0

アプリケーションを再インストールするとアプリケーションのデータベースを削除できますか?Entity Framework:アプリケーションを再インストールするとデータベースを削除する

EDIT: クライアントは、新しいバージョンのアプリケーションがインストールされるたびに、データベースを「パージ」する必要があります。 DropCreateDatabaseIfModelChangesはモデルを変更せずにアプリケーションをインストール/再インストールする可能性があるため、カットしません。

+1

あなたはこの質問をより具体的にして、必要なものを説明できますか? – Vladimir

+1

再インストールするとどういう意味ですか?モデルが変更された場合は? – Thomas

+1

もう少し洞察が必要です。なぜあなたはDBをドロップしたいですか?以前のデータは失われます。アプリのアップグレードについて考えてみましょう。 db rightを落とすにはコストがかかります; – Tushar

答えて

0

Database SetInitializerの静的メンバーを必要なパラメータで使用できます。 dbが存在しない場合、Createのサンプル。

public class YourDbContext : DbContext 
    { 

     public YourDbContext(): base("yourConnectionString") 
     { 
      Database.SetInitializer<YourDbContext>(new CreateDatabaseIfNotExists<YourDbContext>()); 
     } 
    } 
1

あなたには、いくつかのセットアッププログラム(例えばMSIを、)を使用する場合は、アップデート、アンインストールまたはデータベースを削除し再インストールし、イベントでカスタムアクションを追加する必要があります。

他のソリューションは、メインコードに追加することです:

if (IsVersionChanged()) { 

    if (Database.Exists(...)) { Database.Drop(...); } 
} 

しかし、それは再インストールする場合には対応していません(あなたは常に上書きされなければならないファイルのタイムスタンプを分析することによって、このような場合を検出しようとするかもしれませんインストール/再インストール時には、セットアッププログラムがない場合にのみ有効です)。

IsVersionChangedを実装する方法はいくつかあります。たとえば、データベース自体にバージョンを保存したり、Windowsレジストリに最新バージョンを保存したりすることができます。

+0

ありがとう!私はあなたの解決策を試みます。 –

関連する問題