アプリケーションには基礎となるモデルがあり、データ アクセスには Entity Framework DbContext を使用します。基本アプリケーションに加えて、動的にロードされるモジュールがあり、それぞれがアセンブリによって表され、メイン アプリケーションによって実行時にロードされます (ロードするすべてのモジュールは構成ファイルで構成されます)。モジュールはさらに相互に依存できます。たとえば、ModC は ModA と ModB をロードする必要があります。
モジュールは、追加のビューとサービスをベース アプリケーションに提供します (つまり、ベース アプリケーションを拡張します)。ほとんどの場合、ベース アプリケーションにユース ケースを追加します。
DbContext に関する実際の質問: モジュールは、データベース内のテーブルの数を拡張するか、既存のテーブルを拡張します (基本モデル クラスから継承することにより)。
a) DbContext 内のすべての DbSet<...> を書き直さずに、統一された DbContext をモジュールに提供する方法はありますか? モジュールは他の複数のモジュールに依存する可能性があり、複数の継承は C# ではサポートされていないため、ベース アプリケーションの DbContext からの継承は機能しません。
b) Entity Framework データベースの移行を正しく実行して、ロードされたモジュールからすべての移行スクリプトを正しく連携させる方法は? より正確には、モジュールは既存の DB 構造を追加/拡張することしか許可されていないため、モジュールが初めてロードされたときに移行が行われるべきであり、モジュールがアンロードされたら変更は削除されるべきではありませんが、モジュールが更新された場合、DB次にモジュールがロードされたときに移行する必要があります。
C#/Entity Framework でこのようなシナリオを実装するためのパターンまたはアイデアがあることを願っています。
編集: ビュー側では、MVC のプラグ可能な領域で実装するのは簡単です: アプリケーションの機能を動的に拡張しますか? 私の希望は、データ層にも同様のものがあることです。