Angenommen, ich habe folgende Domain-Modelle enthalten:Designing DTOs, die Listen von Objekten
Project Task
- Id - Id
- Name - Name
- List<Task> - Project
Projekte viele Aufgaben haben und Aufgaben haben ein Projekt.
Angenommen, ich möchte ein TodoListDTO Datenübertragungsobjekt erstellen. Mein ursprünglicher Gedanke war, dies zu tun:
TodoListDTO
- List<Project>
Scheint einfach. Dann habe ich Zugriff auf die Liste der Aufgaben in jedem Projekt. Dann habe ich an mehreren Stellen gelesen, dass DTOs so flach wie möglich sein sollten. Aber wie würde ich das modellieren, ohne komplexe Objekte zu verwenden?
Statt TodoListDTO, konnte ich eine ProjectDTO haben, dass etwas wie folgt aussieht:
ProjectDTO
- ProjectId
- Name
- List<TaskId>
- List<TaskName>
aber mit getrennten Listen TaskIds und TaskNames unbequem scheint, und ich sehe nicht, wie das ist besser als nur mit Listet die Eigenschaft auf dem ProjectDTO auf.
Was ist ein guter Weg, damit umzugehen?
So flach wie möglich verbietet es Ihnen nicht, das Problem richtig zu modellieren. Wenn ein Projekt Aufgaben und Aufgaben ein einzelnes Projekt hat, sehe ich nichts falsch mit Ihrem ursprünglichen Entwurf. – saarrrr
Ich würde die erste bevorzugen. Modular .. Denn wenn Sie versuchen, zu einem beliebigen Zeitpunkt in Ihrer Anwendung auf eine Liste von Projekten zuzugreifen, würden Sie am Ende alle Informationen zu den darunter liegenden Aufgaben abrufen. was nicht effizient ist. – Reddy
Nun ein * Daten * ** Transport ** * Objekt * wird verwendet, um Daten zu transportieren (z. B. Import/Export von Daten in ein bestimmtes JSON/XML/.. Format). Die Modelle für EF sind ebenfalls DTOs (Transportdaten von/zur Datenbank). Was ist die Absicht der DTOs in der Frage? –