2012-04-11 16 views
0

Ich habe zwei Fragen.DDD-Modell zu EF

1: Im Moment habe ich zwei Modellklassen, die im EF-Diagramm zwei Entitäten zugeordnet sind.

Wie funktioniert DDD mit EF, wenn ich meine Modellklassen in kleinere spezifische Klassen z. von 2 bis 4. Wie wird sich EF auf sie beziehen?

Muss ich ein separates DTO erstellen, um diese vier Modellklassen den beiden Entitätsmodellen zuzuordnen, die EF verstehen wird?

Ich frage mich nur, wie andere Leute es geschafft haben, dieses Problem zu umgehen.

2: EF erkennt nur Modelle mit öffentlichen Eigenschaften. Wenn ich meine Modellklasse mit Verhaltensmethoden wie GetName(), SetName(), GetAddress() usw. ändere und die öffentlichen Eigenschaften als private Member lösche, löst EF ein Wobbly aus und beklagt, dass es keine Eigenschaften in meinem Modell finden kann. Wie löse ich dieses Problem? Oder wäre die Antwort die gleiche wie die erste Frage, in der ich ein DTO erstellen muss, das öffentliche Eigenschaften hat, die aus meiner Modellklasse abbilden, welche EF verwenden wird?

Ich denke nur, wenn dies der richtige Weg ist, weil es wie ein wenig überflüssige Arbeit scheint, meine DDD-Modellklassen einem anderen Satz von DTO- oder EF-Modellklassen zuzuordnen, die EF verstehen. Muss ich die EF-Klassen zuordnen, wenn sie sich in der Modellschicht oder der Repository-Schicht befinden?

Antwort

1
  1. Es gibt mehrere Möglichkeiten, mehrere Entitäten derselben Tabelle zuzuordnen (TPH-Vererbung, Tabellenaufteilung), aber diese Möglichkeiten müssen strengen Regeln folgen. Andernfalls könnte das Szenario eintreten, in dem Sie keine Entität in die Datenbank einfügen können, da sie nicht alle erforderlichen Spalten für den Datensatz enthält.
  2. EF (mit EDMX) erkennt non public properties as well - EF Code Faust erfordert mindestens Eigenschaft mit zugänglichen Getter oder Setter. Darüber hinaus können diese Verhaltensmethoden redundant sein, da das Schreiben eines eigenen Getters und Setter in der Eigenschaft dieselbe Bedeutung hat.