3

Net 2.0 / Visual Studio 2005 / ASP.Net Web アプリ

このサイトで多くの投稿やコメントを読みましたが、理解できないほど混乱しているものや、要件を満たしていないものがあります。

したがって、UI、BLL、DAL の 3 層アプリケーションがあります。私の DAL では、サーバー エクスプローラーからストアドプロシージャをドラッグして DataSet を作成しました。そのため、接続文字列はデータセット ファイルにハードコーディングされました。

UI(メインプロジェクト)設定デザイナーで接続文字列をBLLに渡し、次にDALに渡すときに、何をしなければならないかを簡単なステップバイステップで説明していただければ幸いです。

4

6 に答える 6

1

可能であれば、ドラッグ アンド ドロップ コーディングは避けたいと思います。魔法で遊びすぎると火傷するぞ。

接続文字列は、アプリケーション内の 1 か所にのみ存在する必要があります。すべての層が接続文字列に関係している場合、それは問題です。DAL は、接続文字列に関係する唯一の層である必要があります。

DAL に接続文字列を取得させる良い方法は、IoC (制御の反転) を使用することです。すべてのコンストラクターを介して接続文字列を渡す必要がないようにします。

DataSet はやや時代遅れです。新しいアプリケーションに取り組んでいる場合は、NHibernate や Linq などの ORM の使用を検討してください。

于 2009-05-22T18:52:10.117 に答える
1

spをドラッグすると、デザイナーがtableAdapterを作成すると思います。アダプターには、アダプターがデータテーブルを埋めるために使用するように設定できる Connection プロパティがあります。構成ファイルまたは構成を保存する他の場所にその接続情報が必要であるという他の人たちに同意します。私もデザイナーへのドラッグ アンド ドロップのファンではありませんが、これはデータベース接続を管理するために機能するはずです。

于 2009-05-22T18:55:43.463 に答える
1

これは非常に興味深いシナリオであり、私は多層アプリでデータセットを使用することがあるので、これまで経験したことがあります。だからここに解決策があります。

UI を除いて、すべてが BLL、DAL のクラス ライブラリ プロジェクトであると想定しています。DAL では、DAL クラス ライブラリ prj の app.config の下に接続文字列を配置するデータセット デザイナーが必要です。再び class-lib prj である DAL の上にある BAL を参照する必要がある場合は、DAL の app.config から connectionStrings セクションをコピーし、BAL classlib prj の app.Config の connectionStrings セクションに貼り付けます。ここで、接続文字列名が単なる 'myDataBaseConnStr' ではないことに注意してください。MyApp.DataLayer.DataSet.myDataBaseConnStr のように、詳細な名前空間参照が含まれます。UI レイヤーの app.config または web.config で実行する必要があるのと同じプロセス。これが正常に完了したら、UI レイヤー アプリ [web.config または app.config] のルート構成ファイルの connectionString を変更できます。このようにして、実行時に実行中の AppDomain であるため、常に UI レイヤーから connectionString を取得します。したがって、そこで接続文字列を変更して、基になる BAL と DAL に反映させることができます。

ありがとう。

于 2009-05-23T18:19:03.810 に答える
0

最後に、私の質問は次のとおりです。実行時に DAL プロジェクト設定デザイナーで設定された接続文字列をオーバーライドする方法はありますか? ..DAL のデータセットがこの接続文字列をテーブル アダプターに使用できるようにします。

別の投稿で、メイン プロジェクトの設定に (DLL と同じ名前の) プロパティがある場合、サブプロジェクト (DLL) がそのプロパティの値を取得して、設定された値を上書きすることを読みました。独自の設定で。

これを行う方法の例はありますか?

于 2009-05-23T05:57:00.853 に答える
0

これを行う方法は、web.config ファイルに接続文字列を含めることです (app.config も機能します)。例:

<add key="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;User ID=username;Password=abc123"/>

次に、DAL で次のようなものを使用します。

using (var connection = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"])) {
    using (var command = new SqlDataAdapter("MyStoredProc", connection)) {
        command.SelectCommand.CommandType = CommandType.StoredProcedure;
        var categories = new DataSet();
        command.Fill(categories);
        return categories;
    }
}

ConfigurationManager.AppSettings["Whatever"] を使用して、.config ファイルから "Whatever" で指定された値を取得できます。非常に便利で、開発環境、テスト環境、および本番環境を切り替えるのに便利です。

于 2009-05-22T18:51:29.837 に答える
0

connectionStrings と呼ばれる、追加できる web.config の特別なセクションがあります。web.config に次を追加します。

  <connectionStrings>
    <add name="oracle" connectionString="Data Source=server; User ID=user; Password=password;"/>
  </connectionStrings>

次に、C# コードで次のようにします。

string connString = ConfigurationManager.ConnectionStrings["oracle"].ConnectionString;

最初の例よりも少し複雑であることはわかっていますが、構成ファイルを整理しておくのに役立ちます。特に、このファイルがますます複雑になるにつれて、この connectionStrings セクションの価値を学ぶことができます。

幸運を!

リカルド。

于 2009-05-22T19:06:41.163 に答える