アプリの複数のコピーが同じデータベースを使用する MySQL データベースを使用する VB6 アプリを置き換える C# アプリを作成中です。新しいアプリは現在の MySQL データベースを使用できる必要がありますが、アプリの将来のインスタンスがユーザーが必要とするサーバーを使用できるように、データベースに依存しないようにしたいと考えています。完璧な世界では、アプリを最初に実行したときに、ユーザーがデータベースの種類 (MySQL、SQL Server など) を選択し、サーバーの IP、ユーザー、パスワード、およびデータベースを指定できるダイアログを表示するようにしたいと考えています。名前。その後、アプリはそのサーバーに接続し、データベースが既に存在する場合はそれを使用し、存在しない場合は新しいデータベースを作成します。
Code First を使用することで、既存のデータベースを使用する方法や新しいデータベースを作成する方法を理解できるようになりましたが、App.config ファイルに接続文字列をハード コーディングするだけで済みます。
<add name="GumpIndexDatabase"
connectionString="server=localhost;userid=123;password=123;port=3306;database=gump_new_data;pooling=false;"
providerName="MySql.Data.MySqlClient"
/>
アプリを起動する前に接続文字列とプロバイダーを変更すると、すべてが期待どおりに機能します。起動後に接続文字列を変更することもできますが、プロバイダーは変更できません。接続文字列の詳細を正しく取得するには、プロバイダーが MySQL であるか MSSQL であるかを知る必要があります (例: ユーザーまたはユーザー ID)。
class GumpIndexDatabase: DbContext
{
public GumpIndexDatabase(string connectionName)
: base(MakeConnectionString(connectionName))
{
}
private static string MakeConnectionString(string connectionName)
{
if (connectionName=MySQL) {
//return MySQL string
} else {
//return SQL Server string
}
}
何時間にもわたって検索しても、そのようなことを行う方法の例は見つかりませんでした. 接続文字列ビルダーに関する記事をいくつか見ましたが、汎用オブジェクトからデータベース固有の文字列を取得する方法がわかりませんでした。
簡単な質問: 実行時にデータベース接続の詳細を指定する方法は?