質問: @"Server=(localdb)\mssqllocaldb;Database=DBforCustomer1;Trusted_Connection=True;"; services.AddEntityFramework().AddSqlServer().AddDbContext(options => options.UseSqlServer(cadConexion)); ``` 問題は、私がこのようにサービスを登録すると、具体的な顧客の具体的なデータベースに結びつけていることです。ミドルウェアの実行開始時に後者を変更できるかどうかはわかりません(これは、ドアで誰が鳴っているのかを知ることができます)。 私は、接続文字列をパラメータとして渡すデータベースコンテキストを構築することができますが、これは、すべての要求に対して実行時に(実行時に)データベースコンテキストを作成する必要があることを意味します。または悪い習慣。さらに、私はこのように私はコントローラにそれを注入するためのサービスとしてデータベースコンテキストを登録することはできません... このための正しいアプローチは何ですか?誰も生産に取り組んでいる同様の構成を持っていますか? 前もって感謝します
回答: まず、リクエストごとに接続文字列を交換することはお勧めしません。 しかし、それは問題ではありません。あなたはこれを行うことができます。 DbContextに新しい接続文字列を渡す必要があります。 `.AddDbContext`は接続文字列を依存関係注入コンテナにキャッシュするので、DIを使用してこのシナリオを動作させることはできません。代わりに、自分でDbContextをインスタンス化し、新しい接続文字列を渡す必要があります。