簡體   English   中英

數據傳輸對象中的屬性是否應擴展外鍵或僅顯示其主鍵

[英]Should the properties in Data Transfer Object expand the foreign keys or simply expose their primary keys

我有一個EmployeeDTO,它在數據庫中表示一個Employee記錄。 Employee表與Department有關系,與Permission有1對多的關系。

在我的實體中,這些表示為完全展開的Department屬性和完全展開的權限對象的List。

問題是DTO是否應該完全擴展DepartmentId的DepartmentDTO屬性? DTO是否應該具有PermissionId列表的完全擴展的PermissionDTO屬性列表?

就像設計中的一切一樣,這取決於您的需求。

  • 如果您需要經常查看並綁定到子屬性,並且您希望開發人員盡可能輕松地使用您的DTO,您可能需要顯式工廠方法來為您提供完全擴展的子屬性。
  • 如果您希望簡化代碼,請不要擴展外鍵屬性,只需讓開發人員根據需要通過鍵獲取所需的子對象/集合。

你可能會在遞歸中遇到問題; 你是否也擴展了Department對象的所有外鍵屬性? 如果在Department的子類中有另一個EmployeeDTO的引用怎么辦?

Microsoft的Entity Framework以及其他流行的業務對象框架通過延遲加載來處理這個概念 - 只有在代碼調用時才獲取完整的擴展子屬性。 這可能是最靈活的解決方案,但由於無法在與父對象相同的數據庫調用中獲取子屬性,因此具有一點開銷/滯后。 這些當然不是純粹的DTO。

是和否。這取決於電話,如果您在每次通話中都需要所有額外的屬性。 它還可能取決於您使用的ORM技術,它可以實現延遲加載並可能影響您的決策(如果您傳遞直接實體對象,但不建議這樣做 )。

通常創建一個包含所有必需屬性的案例DTO和一個或多個DTO對象,這些對象公開更多功能並將其用於其他方法。 例如,我有一個BasicUser類,它只包含UserNameDisplayName ,我有User包含更多,包括Permissions繼承自`BasicUser。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM