在respository中定义的方法返回的一定是某个领域实体的类型吗?例如Product类型或IEnumerable<Product>。如果是的话,那我如果只想得到实体类中的某几项却得到了所有项,会不会造成浪费?例如我只需要Product中的Id和Name,却将其他数据如Price,Genre一起查询返回了
1、是。
2、你可以自己定义一个新的实体,只有ID和Name。这样就不会浪费了。
那我岂不是要对每个不同的查询建立实体以及相应的respositiry,而且对这些新实体的修改操作如何同步到原Product中呢
@cgs: 这是另外的问题了。
每个模式的使用都会有不同的优缺点和局限性,不同领域的应用和不同级别的开发使用不同的模式开发。
你不会想着天天吃庆丰包子,有钱了就是一天吃两千个吧。
关键是看应用规模和场景。
@爱编程的大叔: 那您有什么好的建议呢,我目前的想法是把查询单独出来,定义一个queryservice直接根据viewmodel进行数据库的查询。
1.数据库选择字段都是以页面为单位,就算你只用2个字段,也是整个页面读取到内存的,性能没有影响
2.读取出的数据通过网络返回,网络都是以数据包的形式发送,多几个字段基本没有什么大的影响。除非你的表记录很多很多,但是这时可能就要考虑分表了。
所以一般来说对于普通管理信息系统应用,不用考虑字段多少影响性能的问题,程序还是以简单、清晰为主,不引入不必要的“实体”或者DTO。
谢谢