1 つのプロジェクトに存在できる一般的な DbContext を構築し、他のプロジェクトはすべてドメイン モデル (ドメイン エンティティのセット) を登録できます。
興味深いアイデアですが、それによって何が得られるかはわかりません。
db.Customer
1 つには、単に入力する(または同様の)ことは決してできません。全然知っているかどうかわからないgenericdb.Set<Customer>()
、いつものはずです。(登録されていない可能性があります)。genericdb
Customer
では、この登録はどのように行えばよいのでしょうか。コンテキストでクラスをデータベース モデルにマップするには、次の 2 つの方法があります。
DbSet
派生クラスでプロパティを作成し、DbContext
テーブルと列の名前、複数形などに関するコード ファーストの既定の規則に依存します。
- マッピング構成の提供。
最初のオプションはジェネリック コンテキスト クラスの目的に反するため、ドメイン内の各クラスにEntityTypeConfiguration<T>
s を指定してドメイン クラスを登録する必要があります。(ちなみに、これはコンテキストのコンストラクターで行う必要があります。)
さらなる意味は、どのクラスのグループが一緒に属しているかを認識し、構成の一貫したリストを提供できるコンポーネント/サービスがどこかで必要になるということです。したがって、すぐに使用できる組織化の原則として専用のコンテキストを使用する代わりに、独自のオーガナイザーを作成する必要があります。
しかし、最初に戻ります。プロジェクトに以前から存在していたコンテキストを提供する DbContext ファクトリを含む DAL を作成できませんでしたか? この方法で専用の DbContext クラスを複製する必要はありません。