2017-11-13 2 views
0

私はC# winformsアプリで働いており、私はEntity Frameworkを使ってアクセスするSQLiteデータベースを持っています。私はこのソフトウェアのv1.0をリリースしようとしています。新しいDBバージョンはどのように処理できますか?

質問:私がv1.1を開発しているときに、データベースに新しいフィールドを追加する必要があるかもしれません。もちろん、ユーザーがv1.0からデータをコピーできるようにしたいのですが、データベースファイルをコピーしたばかりの場合、存在しない新しいフィールドにアクセスしようとすると、EFは必ず例外を出します。

古いデータベースのデータをコピーして新しいデータベースに挿入する 'Import database from v1.0'関数を作成する必要がありますか?私はこれが長すぎるように感じる。 EFなどを使用して、古いデータベースを直接変更する関数を作成することはできますか?

+2

なぜ新しいデータベースを作成しますか?なぜあなたのニーズを満たすために既存のデータベースを変更するだけではないのですか?そのための移行スクリプトを作成します。 – mason

+1

EFは[移行](https://msdn.microsoft.com/en-us/library/jj591621(v=113).aspx)* <=リンク*を参照できます。 – Igor

+0

あなたの質問はかなり幅広いので、これがあなたが探しているものでないかどうか私に知らせてください。 – Igor

答えて

1

一般的に、私はこれをやった方法...

  1. は、既存のデータベースのコピーを作成します。これをあなたの "dev"データベースにする
  2. この "dev"データベースを使用して、必要に応じてデータベースを変更し、プログラムのバージョン1.1を完成させます。
  3. 準備ができたら、SqlDiffまたはSQL Compareなどのデータベース差分ツールを使用して差分スクリプトを作成します。
  4. ライブデータベースをバックアップします。
  5. ライブデータベースに対してこれらの差分スクリプトを実行します。これにより、新しいフィールド、テーブル、ビューなどがライブデータベースに追加されます。
  6. あなたはいいですね
+0

私のアプリは、各ユーザのマシン上のローカルデータベースファイルでローカルに実行されます。 「ライブデータベース」とは、マシン上のものを意味しますか?ですから、差異化スクリプトを作成し、1.1から以前のデータベースを検出した場合にスクリプトを実行する機能を1.1に追加する必要があります。 – shadowsora

+0

@shadowsora - "ライブ"データベースとは、1.0データベースのコピーを意味します。あなたが元に戻る必要がある場合に備えて。また、1.1のセットアッププログラムの一環として、1.1セットアップで差分スクリプトが実行され、ユーザーのデータベースが新しいバージョンにアップグレードされます。ちょうどの場合に差異化スクリプトを実行する前に、セットアップでユーザーのデータベースをバックアップすることをお勧めします。 – Icemanind

関連する問題