7

新しいプロジェクトでは、最初にEntityFrameworkCodeを使用したいと思います。そこで、調査を行い、デモを作成して、その動作を確認することにしました。全体を通して、私は大きな問題を抱えているか、おそらくエンティティフレームワークのコードファーストがエンティティにマップする方法とドメイン駆動設計に関係する、私には明らかではない何かを抱えています。

アプリケーションを構築するときに、ドメインエンティティを定義します。(私たちは集合体のルートを定義し、iveが聞いたことからビジネスの状況に応じてそれらのリポジトリを作成します)

それは大丈夫ですが、Entity Framework Code-Firstマッピングは、エンティティ間のリレーショナルな方法のように機能するようです。では、どうすれば両方が共存できるのでしょうか。

例として(ドメイン駆動設計側で考える):

Journal には JournalEnty が含まれ、 タスク問題メモが含まれます

イタリック体はエンティティです。分析後のある意味で、これは直接的な構成であるため、ジャーナルは集約ジャーナルとjournalentryの集約ルートであると言えます。各タスクには、タスクを完了するのにかかった時間を知るための時間値が含まれているため、合計時間とこれからの給与を計算する方法がたくさんあります。ジャーナルには時間レートプロパティがあります。

他のエンティティはそれぞれ集約ルートであり、journalentryへの参照がある可能性があるため、タスク、メモ、および問題がどこに属するかがわかります。

しかし、問題はここにあります.. Entity Framework Code-Firstマッピングがこれをどのように反映できるか?直感的な観点から、ジャーナルにはジャーナルエントリが含まれ、ジャーナルエントリにはメモ、問題、およびタスクが含まれていると言えます。しかし、DDDの観点からは、おそらくそうではありません。私が間違っているが、コードファーストはリレーショナルデータベースのように機能する場合は、私を訂正してください。

では、上記の例をコードファーストでどのようにマッピングするのでしょうか?

どうもありがとうございます。

4

1 に答える 1

2


各ドメインエンティティがデータベースに対応するテーブルを持っていれば、悪くはないと思います。また、JournalオブジェクトにはJournalEntityプロパティがあるため、それがリレーショナル構造であることを意味するわけではありません(リレーショナル構造では、journalEntityにはJournalIDがあります)。さらに、オブジェクト階層を1つのテーブルにマップし、マッピングに複合型を作成することができます。これは、テーブルごとのクラスよりも複雑なマッピングシナリオを使用できることを意味します。

これはScottGuのブログ投稿です。

于 2011-01-31T13:15:33.650 に答える