当您有多个相同对象的表示时,您如何解决这种情况,具体取决于视图?
例如,假设您有一家书店。在书店中,您有 2 种主要的书籍表示形式:
- 在列表中(搜索结果、按类别浏览、作者等):这是一个紧凑的表示,可能有一些聚合,例如 NumberOfAuthors 和 NumberOfRwviews。每个作者和评论都是自己保存在数据库中的实体。
- DetailsView:在这里你不会有聚合,而是每个作者的真实值,因为 Book 有一个属性 AuthorsList。
案例 2 很清楚,您从 DB 中获取所有内容并显示出来。但是如何解决案例 1. 如果您想减少与 DB 之间的连接数和有效负载?因此,如果您不想从 DB 中获取所有实际的作者和评论,但每个人只需要 2 个整数来计数。
完全规范化的解决方案是 2,但 1 似乎需要一些非规范化或创建 2 个不同的实体:业务层中的 BookDetails 和 BookCompact。
重要提示:我不是在谈论查看 DTO,而是实际上从不适合业务层书籍类的数据库中获取数据。