2012-03-01 14 views
0

データベースのデータに基づいてレポートを生成するアプリケーションを作成しました。C#winformsのデータベース間の切り替え

私のアプリケーションの機能は正しいですが、私は以下の問題を抱えています。私のクライアントは2つの同一のデータベースを持っています - テスト用と実際の作業用です。

私のアプリケーションは両方のデータベースで動作する必要があります(「切り替えメカニズム」が必要です)が、実装方法はわかりません。

私は接続文字列を切り替えることができますが、私のレポートでは、1つのデータベースにバインドされたデータセットを使用するという問題があります。

これらのデータセットを両方のデータベースのデータで埋め込むことは可能ですか(データベースはスキーマで同一であり、可能である必要があります)、どのように行うか、または重複するデータセット/レポートのペアを使用する必要があります?

私はSQL Server 2005でVS 2010でC#を使用しています。レポートには.rdlcを使用しています。おかげさまで

+0

いつ切り替えるのですか?条件付きですか? –

+0

アプリケーションには2つのフォームがあります - ログインとメインフォーム。ログインフォームには、ユーザーがどのデータベースユーザが自分のユーザ名とパスワードを入力すると、ユーザはこれらのデータベースを閲覧するためのクリアランスがあるかどうかを確認します – NDraskovic

+0

もし必要ならばデータベースへのアクセス制御も資格情報に基づいて、Ranhiruの回答に加えて、ユーザーを認証するために、app.configの接続文字列のuseridとキーの間のマッピングを維持する必要があります。 –

答えて

2

理想的には、接続文字列を1か所で変更できる必要があり、プロジェクト全体に影響するはずです。

これは、接続文字列を1か所から取得した場合にのみ機能します。 app.configファイルに保管してください。

this articleを参照して、app.configファイルから接続文字列を保存および読み取る方法を確認してください。

+2

でなければなりません。デスクトップアプリケーションであるので、 'web.config'ではなく' app.config'です。 – ChrisF

+0

@ChrisF:ありがとう!私は私の答えを更新しました。 –

+0

@NDraskovic:私はリンクを更新しました:) –

0

人々がリポジトリパターンまたは少なくともそのバージョンを実装した理由を突きつけました。

実際にはビジネスロジックをデータベースから削除してデータベースに依存しないようにする必要があります。データがどこから来ているのかは気にしないでください。

あなたのクライアントからは、データベースアクセスに使用されるapp.config接続文字列の変更だけでは意味がありません。

もしそうなら、私はそれがいくつかの作業を伴うことを知っています。あなたの最善の策は、データレイヤーへのすべてのデータアクセスを制御するシングルトンパターンタイプクラスを持つことです。

既知のインターフェイスを使用すると、実行時に開発パターンまたはライブデータベースへのアクセスを作成するためにファクトリパターンを使用できます(おそらく、app.config設定、またはデータベースへのアクセス権がまったくなく、ハードコードされたテストデータ

+0

削除してくれてありがとうLasse - 私はそれを入力していませんでした。 – ChrisBD

関連する問題