APIを構築しています。構成、ユーザー、グループ(全体で約25テーブル)などの構成アイテムに共通の基本スキーマを持つ多数の異なるデータベース(異なるシステム用)があります。図に示すように、基本クラスから継承することで、モデルの共有部分の非常に広範なEF構成の重複を避けようとしています。Framework(EF)要件のため、これは機能しませんDerivedRepositoryは、コンストラクターが呼び出されるリポジトリーのタイプと一致する必要があります。:base(param)呼び出して、パラメーターをベースDbContext渡す必要があります。ConfigurationContextコンストラクターの呼び出しが必須ではなくDbContextOptions<InvestContext>型のパラメーターを受け取るため、EFがエラーをスローしますDbContextOptions<ConfigurationContext>ます。_options;これを回避する方法はわかりません。共有モデルを一度定義して複数回使用する最良の方法は何ですか?ヘルパー関数を作成し、すべての派生コンテキストから呼び出すことができたと思いますが、継承ほどクリーンまたは透過的ではありません。Merge受け入れられた回答これで、上の例のようなInvestContextを使用して、継承階層を使用する方法でこれを動作させました。DbContextOptions<ConfigurationContext>をそのベースに渡す必要があります。DbContextOptions変数からconnectionstringを掘り起こし、必要な型のDbContextOptionsインスタンスを構築するメソッドを作成しました。InvestContextは、このメソッドを使用して、base()を呼び出す前にoptionsパラメータを正しい型に変換します。変換方法は次のようになります。}InvestContextのコンストラクタ呼び出しは次のように変更されます。options):base(ChangeOptionsType<ConfigurationContext>(options))これまでのところ、InvestContextとConfigurationContextの両方が簡単なクエリで動作しますが、ハックのように思えますし、EF7の設計者が心に留めていたものではないかもしれません。私はまだ複雑なクエリ、更新などを試みるとEFが結び目になると懸念していますが、これは問題ではないようです(下記参照)編集:私はここでEF7チームの問題としてこの問題を記録しました。チームメンバーはEFコアコアの変更を次のように提案しました。"TContextを現在のコンテキストタイプから派生した型にするためのチェックを更新する必要があります"これは問題を解決するだろう。そのチームメンバー(これについては問題がわかります)とのやりとりやEFコアコードの掘り下げが行われた後、上記で概説したアプローチは安全であり、提案された変更が実装されるまでは最良のアプローチです。要件に応じて、DbContextOptionsの非型固有バージョンを使用できます。options):base(options)次に、ConfigurationContextを最初に作成した場合、それを継承するクラスは同じ構成を持つように見えます。異なるコンテキストを初期化する順序によっても異なる場合があります。