1

ユーザーが作成したデータを保存する mssql データベースを使用した winforms プロジェクトがあります。すべて Visual Studio C# 2010 で作成されました。プロジェクトを公開し、ローカル マシンで clickonce を使用して展開できます。アプリケーションは自動的に更新され、うまく機能します。新しいバージョンをインストールすると、データベース内のすべてのテーブル データが削除されます。現在、公開時にデプロイするデータベースにデータがありませんが、将来必要になった場合はデプロイしたいと考えています。

Visual Studio でこの動作を変更する方法はありますか? そうでない場合、更新時にデータベースがすべてのユーザーデータを削除しないようにするにはどうすればよいですか?

以前にこの質問をしましたが、ユーザーは建設的ではないと考えていました。あるユーザーは、「これは、データベースを上書きするだけで、C# や Visual Studio とは関係のないセットアップの問題のように見えます」と述べています。

このユーザーが SETUP で何を意味するのか、誰か詳しく説明してもらえますか?

これは、winforms アプリケーションを自動的に更新する上で非常に重要な部分であるため、非常に建設的な質問になると思います。検索しましたが、この問題に適切な言葉を使用できないようです。これがこのサイトにとって建設的または関連性がない場合、誰かが少なくとも私を正しい方向に向けることができますか?

4

2 に答える 2

1

以前のユーザーは正しかったと思います。問題を正しく理解している場合、VS や C# よりもバージョン管理と展開戦略に関係があります。

アプリに機能を組み込んで、ロード時にアプリのバージョンをチェックし、データベースが既に存在するかどうかを確認し、そこから何をすべきかを決定できます。

解決策として、単純に上書きするのではなく、展開しているバージョンに基づいて、またはデータベースが以前に存在する場合にデータベースを更新する SQL スクリプトを使用して展開することが考えられます。

可能な答え

展開戦略

別の展開戦略esp 戦略 #3 - 再実行可能なスクリプトを使用する

編集あなたの問題は、デバッグまたはリリースを使用して展開しているかどうかとはほとんど関係がないと思います

于 2012-12-04T03:55:19.557 に答える
0

これは、VisualStudioでアプリケーションを実行するときに発生すると言います。私の推測では、データベース(VSプロジェクトに含まれている)のcopyプロパティは「常にコピー」に設定されています。これは、ビルド時にデータベースを\ bin \フォルダーにコピーし、新しいコピーに対して実行していることを意味します。

公開すると、ClickOnceはそのデータベースをApplicationDataフォルダーに配置します。次に、更新を公開すると、データベースが新しいバージョンのApplicationDataフォルダーに転送されます。正直なところ、私はこれが好きではありませんでした。ユーザーがアプリケーションをアンインストールすると、すべてのデータが失われます。このアプローチをお勧めします。これは、ユーザーのプロファイルの下でデータをApplicationDataにコピーすることにより、これをより適切に制御する方法を示しています。これは、アプリケーションをVSで実行する場合にも機能します。これは、アプリケーションをプロファイルにコピーしてから、同じデータベースを繰り返し使用するためです。

于 2012-12-05T19:34:35.700 に答える