所得要求のサブドメインに基づいてDBContext接続文字列を変更するようにミドルウェアを構成するにはどうすればよいですか?マルチテナントASP.NETコア
DBContextがStartup
...に設定されているようですが、接続文字列を解決するためにHTTPRequestを判断するには時期尚早です。
所得要求のサブドメインに基づいてDBContext接続文字列を変更するようにミドルウェアを構成するにはどうすればよいですか?マルチテナントASP.NETコア
DBContextがStartup
...に設定されているようですが、接続文字列を解決するためにHTTPRequestを判断するには時期尚早です。
まあ、これは完全にあなたのニーズに合わせ、しかし、ここで私はどうなるのかだいない可能性があります。
がDbContextFactory
クラスを作成します。このDbContextFactory
クラスはDbContext
のインスタンスを作成でき、任意の文字列をDbContext
コンストラクタに渡すことができます。次に、このファクトリをインジェクトし、dbcontextのインスタンスが必要なときは、ファクトリに返すように依頼してください。もちろん、作成したコンテキストのライフタイムを自分で管理する必要があります(ブロックを使用するなど)。
DbContext
のインスタンスを保持するようにDbContextFactory
を作成することもできます。ファクトリからコンテキストオブジェクトを要求すると、ファクトリは新しいオブジェクトを作成し、それをプライベートフィールドに格納し、その後の呼び出しは同じインスタンスを返します。ファクトリをIDisposable
に、Dispose()
のメソッドでも同様にコンテキストを破棄します。このようにして、Scoped登録を使用している場合、生涯の管理について心配する必要はありません。
https://github.com/joeaudette/cloudscribeをご覧ください。これは、サイト、ユーザー、役割、クレームなどの管理機能を備えたASP.NETコアのマルチテナントWebアプリケーション基盤です。 –
これはしばらく更新されていませんが、このプロジェクトは、テナントごとに異なるDB接続を使用してマルチテナントになるのに非常に役立ちます。 https://github.com/saaskit/saaskit – Brian