私は、EF(http://www.pluralsight.com/training/Courses/TableOfContents/efarchitecture)で限定されたコンテキストの使用についてJulie Lermansのビデオを見てきました。 (POCOを使用して)実装する最良の方法を考えてください。私が見る2つのオプションは、すべてを定義する1つのedmxモデルを持ち、適切なエンティティを含めるためにDbContextを手作業で作成するか、各コンテキストに対して別々のedmxモデルを作成し、自動的に作成されたDbContextを使用することです。エンティティフレームワークアーキテクチャのバインドされた(Db)コンテキスト
いずれかのアイデアがありますか、どちらかの賛否両論がありますか?
IMHO: 単一のモデルでは、クラスが少なくて済み、多くのコードが再利用されます(ただし、これらのクラスは自動的に作成されるため、手動で複製される余分な機能にすぎません)。ある場所に多くのクラスがあり、特殊化が必要なクラスでは、それぞれ異なる名前が必要です。例えば。顧客、CustomerForFunctionalityX、CustomerForFunctionalityB。
別のモデルでは、プロパティを削除することが全く新しいエンティティである必要はないため、コンテキストに入るものをもっと厳しくすることができます。モデル間で違いがあってもCustomerオブジェクト)、それぞれのコンテキストは全く同じテーブルにマッピングされていても全く異なるエンティティを持ちます。あまりにも頻繁にそうでなければ、文脈が間違って定義されていることを意味する)。
作業単位パターンを使用して、特定のチームが作業するエンティティのみを公開する作業単位を作成しないのはどうでしょうか?すべてのチームが同じデータベースに対して作業している場合、実際にはデータベースを管理しているコアチームは1つだけです。制限されたコンテキストは、チーム構造IMOで最もよく対処される問題をコードで解決するようです。 – Maess
もちろん、UOWパターンを追加すると、UOWパターンが好きですが、複雑さが増すことがあります。私が別々のedmxが好きな主な理由は、1つの大きなedmxが管理不能になる可能性があり、またbounded edmxを作成すると、データベース開発者がコンテキスト内のどのエンティティを正確に見ることができるかということです。モデル - これは、データベースモデルを含むモデル全体を通してこの分離を持つことが良いでしょう。 – user1671016