gpt4 book ai didi

c# - Data Transfer Object 中的属性应该扩展外键还是简单地公开它们的主键

转载 作者:太空狗 更新时间:2023-10-30 01:10:06 26 4
gpt4 key购买 nike

我有一个 EmployeeDTO,代表数据库中的一条 Employee 记录。 Employee 表与 Department 有关系,与 Permission 有一对多关系。

在我的实体中,这些表示为完全展开的 Department 属性和完全展开的权限对象列表。

问题是 DTO 是否应该具有 DepartmentId 的完全扩展的 DepartmentDTO 属性? DTO 是否应该有一个完全扩展的 PermissionId 列表的 PermissionDTO 属性列表?

最佳答案

就像设计中的一切一样,这取决于您的需求。

  • 如果您需要经常查看和绑定(bind)到子属性,你想要让它尽可能简单开发人员使用您的 DTO,您可以想要明确的工厂方法给您完全扩展了子属性。
  • 如果你想要简单的代码,不要扩展外键属性和让开发者得到 child 他们按键想要的对象/集合根据需要。

你可能会在递归中遇到问题;您是否也扩展了 Department 对象的所有外键属性?如果在 Department 的子类中引用了另一个 EmployeeDTO 怎么办?

Microsoft 的 Entity Framework 以及其他流行的业务对象框架通过延迟加载来处理这个概念——只有在代码需要时才获取完整的扩展子属性。这可能是最灵活的解决方案,但有一点开销/滞后,因为无法在与父对象相同的数据库调用中获取子属性。这些当然不是纯粹的 DTO。

关于c# - Data Transfer Object 中的属性应该扩展外键还是简单地公开它们的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com