同じ構造のデータベースが多数あり、データベースの設計に一致するデータセットを設計しました。設計時に要求され、app.config で定義された connectionStrings を使用して、データベースに簡単に接続できます。しかし、実行時にデータベースを変更しようとすると問題が発生します。それを処理するための非反射ソリューションが見つかりません。実行時にデータセットの接続文字列を動的に変更する、または少なくとも異なる接続文字列でデータセットを作成する他の方法はありますか!!!
2 に答える
DataSet
を使用して入力しており、次のように接続文字列TableAdapter
を簡単に変更できます。TableAdapter
myTableAdapter.Connection.ConnectionString = connectionString;
お役に立てれば :)
gzaxx の回答は機能しません。異なる DBMS が異なる ADO.NET プロバイダーで動作し、互いに互換性がある場合とない場合があるためです。その背後には多くの理論があり、このテキスト ボックスにそのすべてを入力することはしませんが、主な問題は DataTable ではなく、TableAdapters であることを理解する必要があります。通常、ビジネスおよび UI レイヤーは、テーブル列を作成するときに対応するデータ型を正しく使用していれば、ほぼすべての DBMS で同じ構造を持つ DataTables とのみ通信します。したがって、理論的には、型指定されたデータセットが DataTable ごとに複数のアダプターを接続する方法を提供できる場合、DataTable 構造を同じに保ちながら、サポートする DBMS ごとに 1 つのアダプターを追加できます。
私自身、やや大規模なプロジェクトでこの問題に対処する必要がありました。私にとって実行可能な唯一の解決策は、データ アクセスを別のプロジェクト (クラス ライブラリ) に分割し、サポートしている DBMS ごとにそのような DLL を 1 つ作成することでした。これを開始するのに役立つことを願っています。