hereのように、複数のDDD限定コンテキストを実装しようとしています。DDD限定コンテキストによるエンティティ構成管理
Iは、適切なFluentAPIマッピングと各エンティティのエンティティタイプの設定ファイルを持っている(EF工具を使用してリバースエンジニアリング):これは、例えばコンテキストです。これらの構成ファイルには、関係構成も含まれています。
例えば:UserMap.cs
// Relationships
this.HasOptional(t => t.SecurityProfile)
.WithMany(t => t.Users)
.HasForeignKey(t => t.SecurityProfileCode);
SecurityProfile
とDomainPermission
コンテキストにDbSets
ありません。それらは、それぞれ、User
とModule
のナビゲーションプロパティのためにモデルに自動的に持ち込まれます。
これは私の最初の問題を引き起こします。他のコンテキストにUser
(または任意の他のエンティティ)を追加するとき、私は2つのいずれかを行うに覚えている:
はまた
SecurityProfile
のモデルビルダー(および実体上の他のすべての関係)に設定を追加します明示的に何らかの形でモデルから
SecurityProfile
を除外します。
これはメンテナンスの悪夢になり始めています。
上記のポイント2で概説したように、エンティティグラフを明示的に「トリム」することに満足します。
ただし、エンティティ設定ファイルでリレーションシップがすでに定義されている場合は、エンティティが表示されない可能性があります。Ignore()
上記の文脈OnModelCreating
ためmodelBuilder.Ignore<SecurityProfile>();
をしようと
はConfigureAssociations()
に次のエラーを与える:
のSystem.InvalidOperationException:ナビゲーションプロパティ「をSecurityProfile」タイプ「ユーザー」に関する宣言されたプロパティではありません。それがモデルから明示的に除外されておらず、有効なナビゲーションプロパティであることを確認します。
私が考えることができる唯一の解決策は、基本構成クラスを継承し、各コンテキストの関係設定を上書きすることです。私たちが30-40 +別の文脈で終わるかもしれないことを考えれば、これはメンテナンスの悪夢になるかもしれません。
また、コンテキストごとに非常に固有のエンティティモデルを持つこともできますが、これもまた、エンティティクラスの爆発と重複した構成の潜在的なメンテナンスの問題につながります。
制限付きコンテキストの実装時に、エンティティとそのエンティティ構成を最適に管理して維持するにはどうすればよいですか?
[EFプロジェクトサイト](http://entityframework.codeplex.com/discussions)を考慮して、誰かがこれを閉じようと投票したことは間違いです。「アプリケーションでEntity Frameworkを使用することについての質問は、エンティティフレームワークタグ。 –
クローズ投票を見ると、それが「あまりにも広い」ことがわかります。そして私はそのことに同意する。あなたには1つではなく3つの質問があります。副注釈:DDDによれば、EFの要件に合うようにエンティティを変更する必要があるため、エンティティは永続性を知らないことがあります。 – jgauffin
@jgauffin 3つの質問を第3の質問に凝縮させていただきたいと思います。しかし、これは単純な「どのように私はこれを行うのか」という質問ではなく、背景情報は3つの質問すべてに役立ちます。だから、「あまりにも広すぎる」という理由は、SOがこれらのタイプの質問をするのに推奨されるアウトレットだと考えると、有効ではありません。たぶん、これはコミュニティチャンネルとしてSOをハイジャックするオープンソースプロジェクトの問題です。しかし、他の選択肢がないように見えますが、これが唯一のコンセントです。 –