类别:学习文档

日期:2021-07-15 浏览:1947 评论:0

适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致。

有的人先查回所有字段数据,再使用 AutoMapper 映射。

我们的功能是先映射,再只查询映射好的字段,节省了io性能。

Select<Tag>().Limit(10).ToList(a => new TestDto { id = a.Id, name = a.Title });
Select<Tag>().Limit(10).ToList(a => new TestDto());
Select<Tag>().Limit(10).ToList(a => new TestDto { });
Select<Tag>().Limit(10).ToList(a => new TestDto() { });
Select<Tag>().Limit(10).ToList<TestDto>();

这种映射支持单表/多表。

查找规则,查找属性名,会循环内部对象 _tables(join 查询后会增长),以 主表优先查,直到查到相同的字段。

如:

A, B, C 都有 id,Dto { id, a1, a2, b1, b2 },A.id 被映射。也可以指定 id = C.id 映射。

友情提醒:在 dto 可以直接映射一个导航属性

fsql.Select<Song>().ToList<Dto>();
//情况1:Dto 与 Song 属性名相同的字段被查询,返回 List<Dto>

fsql.Select<Song>().ToList(a => new Dto { xxx = a.ext }) 
//情况2:Dto 与 Song 属性名相同的字段被查询,纠正映射 ext,返回 List<Dto>

fsql.Select<Song>().ToList(a => new Song { id = a.id }) 
//情况3:Lambda 与 Song 类型一样,只查询指定字段 id,返回 List<Song>

fsql.Select<Song>().ToList(a => new { id = a.id }) 
//情况4:Lambda 匿名类型,只查询指定字段 id,返回 List<匿名对象>

请仔细处理区别,请仔细处理区别,请仔细处理区别

fsql.Select<Song>().ToList(a => new Dto(a.id))
//情况5:只查询 id,返回 List<Dto>

fsql.Select<Song>().ToList(a => new Dto(a.id) { xxx = a.ext })
//情况6:查询 id, ext,返回 List<Dto>

fsql.Select<Song>().ToList(a => new Song(a.id))
//情况7:查询 id,返回 List<Song>

fsql.Select<Song>().ToList(a => new Song(a.id) { xxx = a.ext })
//情况8:查询 id, ext,返回 List<Song>

GroupBy 所有方法不使用 DTO 映射规则;

系列文章导航

FreeSql (一)入门及安装 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二)自动迁移实体 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三)实体特性 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (四)实体特性 Fluent Api - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (五)插入数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (六)批量插入数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (七)插入数据时忽略列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (八)插入数据时指定列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (九)删除数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十)更新数据 - 学习文档 - 零一的世界 (vtzw.com)FreeSql (十一)更新数据 Where - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十二)更新数据时指定列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十三)更新数据时忽略列 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十四)批量更新数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十五)查询数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十六)分页查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十七)联表查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十八)导航属性 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (十九)多表查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十)多表查询 WhereCascade - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十一)查询返回数据 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十二)Dto 映射查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十三)分组、聚合 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十四)Linq To Sql 语法使用介绍 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十五)延时加载 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十六)贪婪加载 Include、IncludeMany - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十七)将已写好的 SQL 语句,与实体类映射进行二次查询 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十八)事务 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (二十九)Lambda 表达式 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十)读写分离 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十一)分表分库 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十二)Aop - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十三)CodeFirst 类型映射 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十四)CodeFirst 迁移说明 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十五)CodeFirst 自定义特性 - 学习文档 - 零一的世界 (vtzw.com)

FreeSql (三十六)进阶 仓储系列文档 - 学习文档 - 零一的世界 (vtzw.com)


本文标题:FreeSql (二十二)Dto 映射查询
本文链接:https://vtzw.com/post/720.html
作者授权:除特别说明外,本文由 零一 原创编译并授权 零一的世界 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
 您阅读本篇文章共花了: 

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。