2010-11-21 3 views
1

C#.netでアプリケーションをあるコンピュータから別のコンピュータに転送すると、データベースファイルの場所が変更されるたびに接続文字列を変更する必要があります。C#.netでアプリケーションの接続文字列を作る方法、コンピュータに依存しない?

どのように私は何度も何度も接続文字列を変更する必要がないように私は、これを防ぐことができますすることができますか?

+0

です。何に接続していますか? – SLaks

+1

どのようなデータベースですか?中央の場所にデータファイルを保存してみませんか? – DevelopingChris

答えて

1

データベースの場所が変更されると、どこかで変更する必要があります。 ODBCの時代には、システム全体の接続を定義し、接続文字列に名前だけを指定することができました。しかし、サーバーが動いたら、とにかくODBCを変更する必要があります。

私はここでいくつかの解決策を考えることができます。 1つは、データベースがローカルマシン上で実行されている場合は、マシン名の代わりにlocalhostを使用することです。

それがファイルである場合には、ネットワーク共有を作成し、\\localhost\shareName\file.dbを使用するように、その上に置きます。

それは、サーバー・データベースであり、あなたが別のネットワークでそれを行うことができるように、他のマシン上にあるホストファイルを使用してDNS名を使用すると、共通の名前を割り当てることができます。

+0

+1はhostsファイルの考え方です。私はそれを多種多様な状況で効果的に使用してきました(しかし、これは認められません)。 –

+0

私はC#.netでWindowsアプリケーションを作っていますが、web.configファイルはAsp.net Webアプリケーションの一部なので、web.configファイルには含まれていません。接続文字列を作成する方法はありますか独立したWindowsアプリケーションプラットフォーム。 – Tom007

0
  • 可能であれば、データベースをネットワークに配置し、接続文字列にネットワークの場所を指定します。

    または

  • Connection String Builderを使用して接続文字列の可変部分(複数可)を修正します。

0

相対パスを使用してください。ほとんどのシナリオでは、実行中のベースディレクトリ(またはASP.NETシナリオではApp_Data)に変換される組み込みの|DataDirectory|を使用できます。

SQL Expressのようなクライアントサーバーデータベースを使用している場合は、ローカル名を使用する.\SQLEXPRESSなどのサーバー名も設定する必要があります。

0

これは時々起こる古いものです。

Visual Studioには複数のビルド環境をサポートする機能があり、必要な場所でテストできるように、環境固有の値(つまりデータベース接続文字列)を指定することができます。

区のブログや完全なポストからこれをプルhereを見られるかもしれない:

それはあなたが簡単にVisual Studioのビルド環境の中、この構成プロセスを自動化する(そして両方機能する方法で行うことができ判明IDE内だけでなく、コマンドライン/自動ビルドでも)。以下は、これを行うために取る上位レベルの手順です。彼らは、VS 2005とVS 2008

  1. (のMSBuildプロジェクトファイルをベースとしている)を使用するASP.NET Webアプリケーションプロジェクト
  2. オープンVS Configuration Managerと新しい "のDev"、 "QA" を作成し、両方で動作し、プロジェクトとソリューションの "ステージング"構成を構築する
  3. 新しい "web.config"を追加します。プロジェクトの「開発」、「web.config.qa」、「web.config.staging」ファイルを編集し、それらのアプリケーションのモード固有の設定を含むようにカスタマイズします。
  4. プロジェクトに新しい「ビルド前のイベント」コマンドを追加しますプロジェクトをビルドするたびに、適切なモード固有のバージョンでプロジェクトのweb.configファイルを自動的にコピーすることができます(たとえば、ソリューションが "Dev"構成になっていれば、web.config.devあなたの新しいアプリケーションを作るとき、メインweb.configファイルに設定)。

私はこのためのセットアップのほとんどを信じるVS 2010ではあなたのために行われますが、原則はまだ同じです。あなたができます共同ビルドのためにビルド前のイベントをスキップするあなたがそのやり方をするのに慣れているならば、viaコードの中の接続文字列。これはStackOverflowでの例ですhere on this answered question

回答の開始(またはこれを実装する可能性が高い方法)は、それぞれの接続文字列の値を別々の名前のconnection.configファイルに保存することです環境にこれには、web.configファイルのconnectionStrings部分の値のみが含まれます。新しい環境を追加するということは、開発者がメインのweb.configファイルに触れることを意味するものではなく、サーバのウェブルートからデータベース接続文字列を削除してサーバーのセキュリティを強化することもできます。別のfoleにconnectionStringsを除去するため

方法は、ここで見られるかもしれない:http://www.bigresource.com/Tracker/Track-ms_sql-cberGbNT/

を私はまた、データベースのネットワークアクセス可能バージョンを持つ代わりに、各開発者が自分の環境内の1つを持って行うことになります。切断された作業が意味をなさないが、管理の観点からは、実際にはプロジェクトの各段階(開発、ステージング、およびプロダクション)ごとに1つのデータベースのみが存在する必要があります。

希望すると便利で、理にかなっていないものについてはフォローアップの質問をしてください。

関連する問題