9.7、查询结果集映射

我们总是将查询结果集进行筛选以选择我们必要的数据。

结果集映射好处

数据查询结果集映射也是一个非常重要的功能,此功能能够保护数据安全性,又能提高查询性能,也能减少网络传输大小

所以,这里单独拿出一个章节去介绍查询结果集映射。

常见示例

比如我们的 Test 表有以下字段:

Id

Name

Age

CreatedTime

CreatedBy

FakeDelete

1

Monk

27

2020-05-21 13:20:30

SA

0

2

SNRC

30

2020-05-21 19:20:30

Monk

1

Linq/Lambda 自带筛选

默认情况下,我们查询数据库数据会返回所有列数据,包括系统记录字段等这些无需传输给前端的数据。所以,我们可通过 Linq/Lambda 自带的 Select 方法进行筛选。如:

var dtos = _testRepository.Entity
                .Where(u => u.Age > 26)
                .Select(u => new DtoModel(){ u.Id, u.Name, u.Age });

这样生成的 Sql 语句只会包含 Id, Name, Age 三个字段,这正式我们想要的。

如果筛选的字段很多怎么办?

如果 Select 筛选的字段很多,我们可以通过 ProjectToType<Dto> 方式,这样可以让我们的代码更加简洁且不易出错。如:

var dtos = _testRepository.Entity
                .Where(u => u.Age > 26)
                .ProjectToType<DtoModel>();

看,是不是更加简单啦!😊

查询数据返回后再映射

ProjectToType 只能处理简单的一一映射模式,如需更加复杂的映射配置,可查看 八、对象映射指南 章节。

常见用法是:.ToList() 之后接着调用 Adapt<Dto>()

最后更新于