1. ホーム
  2. entity-framework

[解決済み】Entity Framework。1つのデータベース、複数のDbContexts。これは悪い考えなのか?[クローズド]。

2022-04-02 11:59:37

質問

これまでの私の印象では DbContext はデータベースを表すものなので、アプリケーションが1つのデータベースを使用する場合は、1つの DbContext .

しかし、一部の同僚は、機能領域を個別の DbContext クラスがあります。

これは、コードをよりきれいに保ちたいという、良いところから来たものだと思いますが、不安定な感じがします。しかし、残念ながら、私の直感は設計を決定するための十分な条件ではありません。

だから、探しているんです。

A)なぜダメなのかの具体例。

B) すべてうまくいくという保証。

解決するには?

1つのデータベースに対して複数のコンテキストを持つことができます。例えば、データベースに複数のデータベーススキーマが含まれていて、それぞれを独立した自己完結した領域として扱いたい場合に便利です。

問題は、最初にコードを使用してデータベースを作成する場合です。これは、アプリケーション内の単一のコンテキストでしかできません。このためのトリックは、通常、データベースの作成にのみ使用される、すべてのエンティティを含む追加のコンテキストです。実際のアプリケーションでは、エンティティのサブセットだけを含むコンテキストは、データベースのイニシャライザを NULL に設定する必要があります。

例えば、共有エンティティタイプや、あるコンテキストから別のコンテキストへの受け渡しなど、複数のコンテキストタイプを使用する際に見られる問題は他にもあります。一般に、複数のコンテキストを使用することは可能であり、設計をよりすっきりさせ、異なる機能領域を分離することができますが、複雑さが増すという代償があります。