Entity Framework 6 for MySQL を使用した動的データベース接続
Entity Framework 6 (EF6) を使用して複数のスキーマを動的に接続するのは難しい場合があります。この記事では、MySQL データベースへの動的接続を確立し、選択したデータベース名に基づいて接続文字列を渡すための包括的なソリューションを提供します。
MySQL を EF6 に向けて準備する
開始MySQL .Net Connector 6.8.1 (ベータ) をインストールし、Visual Studio ソリューションでライブラリを参照します。接続文字列とプロバイダー情報を Web.config ファイルに追加します:
<connectionStrings> <add name="mysqlCon" connectionString="Server=localhost;Database={0};Uid=username;Pwd=password" providerName="MySql.Data.MySqlClient" /> </connectionStrings> <entityFramework> <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" /> </providers> </entityFramework>
動的データベース接続の作成
次に、ApplicationDbContext クラスを変更します:
public class ApplicationDbContext: DbContext { public ApplicationDbContext(string dbName) : base(GetConnectionString(dbName)) { } public static string GetConnectionString(string dbName) { // Server=localhost;Database={0};Uid=username;Pwd=password var connString = ConfigurationManager.ConnectionStrings["mysqlCon"].ConnectionString.ToString(); return String.Format(connString, dbName); } }
これにより、新しい ApplicationDbContext インスタンスの作成時にデータベース名をパラメータとして動的に渡すことができます。
データベース移行の処理
移行の場合は、MigrationsContextFactory を作成します。 class:
public class MigrationsContextFactory : IDbContextFactory<ApplicationDbContext> { public ApplicationDbContext Create() { return new ApplicationDbContext("developmentdb"); } }
このファクトリは、移行のデフォルト データベースを指定し、移行のターゲットが正しいスキーマになるようにします。
結論
このアプローチの利用Entity Framework 6 でデータベース スキーマの動的な選択が可能になります。デフォルトの接続ファクトリを変更し、接続文字列を動的に生成するヘルパー メソッドを作成することで、複数のスキーマに効率的に接続できます。
以上がEntity Framework 6 for MySQL で動的データベース接続を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。