美文网首页.NETdotNET
FreeSql 教程 (二十二)Dto 映射查询

FreeSql 教程 (二十二)Dto 映射查询

作者: 叶先生_34e6 | 来源:发表于2020-03-17 19:23 被阅读0次

    FreeSql 以 MIT 开源协议托管于 github:https://github.com/2881099/FreeSql

    适合喜欢使用 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(a => new DTO { xxx = a.ext }) 
    //情况1:附加所有映射,再额外映射 ext,返回 List<DTO>
    
    fsql.Select<Song>().ToList(a => new Song { id = a.id }) 
    //情况2:只查询 id,返回 List<Song>
    
    fsql.Select<Song>().ToList(a => new { id = a.id }) 
    //情况3:只查询 id,返回 List<匿名对象>
    
    fsql.Select<Song>().ToList(a => new DTO(a.id))
    //情况4:只查询 id,返回 List<DTO>
    
    fsql.Select<Song>().ToList(a => new DTO(a.id) { xxx = a.ext })
    //情况5:查询 id, ext,返回 List<DTO>
    
    fsql.Select<Song>().ToList(a => new Song(a.id))
    //情况6:查询 id,返回 List<Song>
    
    fsql.Select<Song>().ToList(a => new Song(a.id) { xxx = a.ext })
    //情况7:查询 id, ext,返回 List<Song>
    

    系列文章导航

    相关文章

      网友评论

        本文标题:FreeSql 教程 (二十二)Dto 映射查询

        本文链接:https://www.haomeiwen.com/subject/ajjudhtx.html