[英]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屬性列表?
就像設計中的一切一樣,這取決於您的需求。
你可能會在遞歸中遇到問題; 你是否也擴展了Department對象的所有外鍵屬性? 如果在Department的子類中有另一個EmployeeDTO的引用怎么辦?
Microsoft的Entity Framework以及其他流行的業務對象框架通過延遲加載來處理這個概念 - 只有在代碼調用時才獲取完整的擴展子屬性。 這可能是最靈活的解決方案,但由於無法在與父對象相同的數據庫調用中獲取子屬性,因此具有一點開銷/滯后。 這些當然不是純粹的DTO。
是和否。這取決於電話,如果您在每次通話中都需要所有額外的屬性。 它還可能取決於您使用的ORM技術,它可以實現延遲加載並可能影響您的決策(如果您傳遞直接實體對象,但不建議這樣做 )。
通常創建一個包含所有必需屬性的案例DTO和一個或多個DTO對象,這些對象公開更多功能並將其用於其他方法。 例如,我有一個BasicUser
類,它只包含UserName
和DisplayName
,我有User
包含更多,包括Permissions
和繼承自`BasicUser。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.