假設我有以下的域模型:設計的DTO包含對象的名單
Project Task
- Id - Id
- Name - Name
- List<Task> - Project
項目有很多任務和任務有一個項目。
現在假設我想創建一個TodoListDTO數據傳輸對象。我原來的想法是這樣做的:
TodoListDTO
- List<Project>
似乎很簡單。然後我可以訪問每個項目中的任務列表。然後我在幾個地方讀到DTO應該儘可能平坦。但是,如何在不使用複雜對象的情況下建模?
相反TodoListDTO的,我可以有一個ProjectDTO,看起來像:
ProjectDTO
- ProjectId
- Name
- List<TaskId>
- List<TaskName>
但具有TaskID的和TaskNames似乎不方便單獨的列表,我看不出這是任何不只是有一個更好的在ProjectDTO上列出屬性。
什麼是處理這個問題的好方法?
儘可能平坦並不禁止您正確建模問題。如果一個項目有任務和任務有一個項目,那麼我看不到你的初始設計有什麼問題。 – saarrrr
我寧願第一個。模塊化。因爲,如果您嘗試訪問應用程序中任意位置的項目列表,您最終將獲取其下任務的所有信息。這是不高效的。 – Reddy
那麼a * Data * ** Transport ** * Object *用於傳輸數據(f.i.導入/導出數據到特定的JSON/XML/..格式)。 EF的模型也是DTO(將數據從/傳輸到數據庫)。 DTO在這個問題上的意圖是什麼? –