2012-04-11 15 views
0

私には2つの質問があります。DDDモデルからEF

1:現時点では、EF図の2つのエンティティにマップされる2つのモデルクラスがあります。

DDDはEFでどのように動作するのですか。私のモデルクラスをより小さな特定のクラスに分割することに決めたからです。 EFはどのように関係しますか?

これらの4つのモデルクラスをEFが理解する2つのエンティティモデルにマップするために、別個のDTOを作成する必要がありますか?

他の人がどのようにこの問題を回避できたのか不思議です。

2:EFは、パブリックプロパティを持つモデルのみを認識します。 GetName()、SetName()、GetAddress()などのビヘイビアメソッドを持つようにモデルクラスを変更し、パブリックプロパティをプライベートメンバーとして削除した場合、EFは揺らぎを起こし、モデル上でプロパティを見つけることができないと訴えます。 この問題を解決するにはどうすればよいですか?それとも、私のモデルクラスからマップする公共のプロパティを持つDTOを作成する必要があるという点で、最初の質問と同じ答えになりますか?

DDDモデルクラスをEFが理解できるDTOまたはEFモデルクラスの別のセットにマップする必要があるため、これが正しいパスであると思われます。 EFクラスにマップする必要がある場合、それらはモデルレイヤーまたはリポジトリレイヤーにありますか?

答えて

1
  1. あり、同じテーブル(TPH継承、テーブル分割)に複数のエンティティをマッピングする可能性があるが、これらの可能性は、厳しい規則に従わなければなりません。そうしないと、レコードに必要なすべての列が含まれていないため、エンティティをデータベースに挿入できないシナリオになる可能性があります。
  2. EF(EDMX付き)は、non public properties as wellを認識します - EFコードの拳は、アクセス可能なゲッターまたはセッターで少なくともプロパティを必要とします。さらに、これらの振る舞いメソッドは、プロパティ内に独自のゲッターとセッターを書くことは同じ意味を持つため、冗長になります。
関連する問題