質問: DbContextから派生してパラメータのないコンストラクタを使用すると、web.configから接続文字列がロードされます。他のDbContextコンストラクタのいずれかを使用してconnectionStringを明示的に指定することもできます。 私の特定の状況では、接続文字列はweb.configで指定できません。サーバーの場所/ユーザー名とパスワードは実行時に決定されるためです。簡単に修正できますか?接続文字列を指定するには、上記のコンストラクタを使用するだけですか。違う。 問題は、上記のコンストラクタを使用して接続文字列を指定しても、デフォルトのプロバイダを使用しようとするため、1つ以上の非標準プロバイダを使用している場合は、うまくいかないことです。 web.configでデフォルトプロバイダーを変更できると確信していますが、複数のプロバイダーを使用したいのですが、そうしないでください。 これを回避できる唯一の可能な方法は、DbContextの代わりにObjectContextを使用することです。これにより、データベース接続文字列と共にプロバイダを指定できるようになります。 他に方法はありますか?私の回避策はかなり合理的ですか? ObjectContextインスタンスからDbContextを作成することもできると思います。
回答: 次のように手動で`DbConnection`を作成し、それを`DbContext`コンストラクタに渡します。 ``` var conn = DbProviderFactories.GetFactory("MY_CONN_PROVIDER").CreateConnection(); conn.ConnectionString = "MY_CONN_STR"; new DbContext(conn, true); ``` 2番目のパラメータ`bool contextOwnsConnection`が`true`注意してください。他の場所では接続を再利用しないので、コンテキストで接続を管理し、必要に応じて`Dispose()`します。