1

開発者向けのデータベースをアップグレードする方法などに関するかなりの数の質問を読みましたが、 migratordotnetなどを使用することに傾いていますが、MSBuild や NAnt などでアップグレードを実行する必要があるようです。これらは、エンドユーザーがインストールすることを期待すべきものではありません。

理想的には、ユーザーが新しいバージョンのアプリをインストールして起動し、背後ですべてを処理するプロセスである必要があります。プロセスにかかる時間に応じて、進行状況バーが表示される場合と表示されない場合があり、その後、アプリは通常、sql、msbuild、リレーショナル データベース、またはリモートで技術的に聞こえるものがあることに気付かずに、幸せに使用されます。

その他の雑多な情報:

xcopy がインストールされている SQLCE。

ほとんどの場合、大きすぎてはならない単一ユーザー データベース。

リリースはかなり頻繁に行われ、要求された機能に対するユーザーの入力を通じてプログラムが進化します。

最初のリリースはまだ完了していないので、現在のデータについて心配する必要はありません。最初のリリースとその後のリリースのための簡単なプロセスが必要です (エンドユーザーにとって、できれば私にとっても!)。

LINQ to SQL を ORM として使用します。(最初にデータベースをアップグレードして
から、SQLMetal を実行して
クラスを再生成しますか?)

TDD を (初めて) 実行し、アップグレードのテストを自動化する方法を考えています。

Visual C# Express であるため、VS プラグインはありません。

編集:

MSBuild には VS だけでなく .NET Framework が付属していると思います。そのため、これは問題ではなく、migratordotnet を使用して msbuild にシェルアウトするだけでよいと思います。必要に応じて、コンソール出力をリダイレクトし、ナイーブな文字列解析を行って進捗情報を取得することもできますが、単なるマーキー プログレス バーではなく、実際の進捗状況を表示するのに十分な時間がかかる場合は、それに頼ります。

4

4 に答える 4

1

上記のコメントに追加する唯一のことは、パックタイプの操作についても心配する必要があるということです。

アプリをSQLCE3.1から3.5にアップグレードするには、3.5ライブラリをインストールしてから、パック操作を発行してデータベース形式をアップグレードする必要があります。プロセスの一部として、これを覚えておくとよいでしょう。SQL CE 3.5の場合、3.5でデータベースを開くだけで3.1との互換性がなくなります。つまり、ユーザーが後でアプリケーションのバックアップまたはロードできないものを復元した場合です。したがって、接続時にこれらのエラーをトラップし、バージョンの非互換性のためにMSからのすべての例外を処理するようにする必要があります。

3.1と3.5のもう1つの落とし穴は、両方を同時にVisualStudioにロードできないことです。したがって、このプロセスを何度もテストするということは、ワイプとアップグレードを繰り返し実行できるVMを意味します。開発マシンで実際にそれを行うことはできません。:(

于 2009-05-16T05:51:13.967 に答える
0

Wizardbyでできることは次のとおりです。

これには、データベーススキーマの移行タスクをプログラムで実行できるようにするAPIがあります。適切なIDbPlatformSqlCePlatformそこにもあります)、IMigrationVersionInfoManagerバージョン情報をSchemaInfoテーブルに格納する標準実装IMigrationScriptExecutiveを持つ、、デフォルト実装を持つ、、およびIMigrationServiceそれ自体が必要になります。次に、移行定義を記述し、それをアセンブリにコンパイルして、にフィードしますIMigrationService.Migrate(connectionString, null, yourMigrationDefinition)

于 2009-05-14T06:10:36.137 に答える
0

一般に、この作業は通常、インストール時にデータベースの移行が行われる方法で行われます。インストール中に、データベースの既存のバージョンを検出し、既存のデータベースから新しいデータベースへのデータの移行に関連するすべての操作 (つまり、一時テーブルの作成、データのコピー) を実行する一連のコード (通常は完全にカスタム) があります。既存のテーブルから一時テーブルへの変換、既存のテーブルの削除、新しいテーブルの作成、一時テーブルのデータを新しいテーブルに追加するための結合の実行など)。このプロセスは、定義上、かなり複雑です。特にエンドユーザーの実稼働環境向けに変換プロセスを自動化するツールを知りません。(通常、エンド ユーザー データベースの処理には多くの特殊なケースが関係します。)

于 2009-05-01T16:59:58.553 に答える