0

存储库模式可以抽象出实际的数据源,我确实看到了很多好处,但是存储库不应该使用 IQueryable 来防止泄漏数据库信息,它应该始终返回域对象,而不是 DTO 或 POCO,并且它这是最后一件事,我很难解决问题。

如果存储库模式总是必须返回一个域对象,这是否意味着它在大多数情况下都会获取太多数据?假设它返回一个具有四十个属性的员工域对象,并且在使用该对象的服务和视图层中,实际使用了其中的五个属性。

这意味着数据库已经通过网络获取了大量不必要的数据。对一个对象执行此操作几乎不会引起注意,但是如果通过这种方式推送数百万条记录并且每次都丢弃大量数据,这是否不被视为不良行为?

是的,当添加或编辑或删除对象时,您将使用整个对象,但读取整个对象并将其推送到仅使用其中一部分的另一层并没有以最佳方式利用下划线数据库和网络。我在这里想念什么?

4

1 回答 1

1

没有什么可以阻止您拥有一个单独的读取模型(可以是单独存储的域投影或查询时间投影)并分离出命令和查询关注点 - CQRS。

如果您随后将 GraphQL 之类的东西放在读取端的前面,那么消费者可以准确地决定他们想要从完整模型到单个字段/属性级别的数据。

您的命令仍然像以前一样与完整的域模型交互(除非使用基于集合的操作是性能上的明智之举)。

于 2020-10-30T14:08:43.177 回答