如何使用Dapper映射嵌套对象列表

3

我目前正在使用Entity Framework进行数据库访问,但想看看Dapper。我有这样的课程:

public class Course{
   public string Title{get;set;}
   public IList<Location> Locations {get;set;}
   ...
}

public class Location{
   public string Name {get;set;}
   ...
}

因此,可以在多个位置教授一门课程。Entity Framework为我执行了映射,因此我的Course对象中填充了位置列表。我将如何使用Dapper做到这一点,甚至有可能还是我必须在几个查询步骤中做到这一点?

山姆藏红花

Dapper不是一个成熟的ORM,它不能处理神奇的查询等问题。

对于您的特定示例,以下可能会起作用:

抢修课程:

var courses = cnn.Query<Course>("select * from Courses where Category = 1 Order by CreationDate");

获取相关映射:

var mappings = cnn.Query<CourseLocation>(
   "select * from CourseLocations where CourseId in @Ids", 
    new {Ids = courses.Select(c => c.Id).Distinct()});

抓住相关地点

var locations = cnn.Query<Location>(
   "select * from Locations where Id in @Ids",
   new {Ids = mappings.Select(m => m.LocationId).Distinct()}
);

全部映射

将其留给读者,您将创建一些地图,并遍历课程中的各个位置。

请注意in如果您的查询少于2100个(Sql Server),则技巧将起作用,如果查询次数更多,则可能需要将查询修改select * from CourseLocations where CourseId in (select Id from Courses ... )为在这种情况下,您也可以一次使用提取所有结果QueryMultiple

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用JpaRepository和对象的嵌套列表中进行搜索?

使用mapstruct映射嵌套对象

您如何使用Java Stream API根据存储在对象内部的信息将对象列表转换为嵌套映射?

您如何使用Java Stream API根据存储在对象内部的信息将对象列表转换为嵌套映射?

如何使用Stream API从对象检索嵌套列表?

使用Dapper映射嵌套对象的列表

Automapper:如何映射嵌套对象?

使用Dapper将具有表示列表的字符串的列映射到List <>对象

React-如何映射嵌套的对象值?

Dapper映射结果列表

使用MapStruct的嵌套列表映射

如何使用Dapper映射DBNull值?

如何使用ExpressMapper映射递归嵌套对象

如何使用Swift Object Mapper映射对象的嵌套数组?

如何使用AutoMapper映射对象的子级列表

使用字符串键映射嵌套的JavaScript对象,然后过滤列表

如何使用lodash分组对象并映射到列表-react

Kotlin:如何使用嵌套列表映射列表

如何在不使用内联映射或多个.ForMember的情况下在automapper中映射嵌套对象?

使用可观察对象如何映射嵌套的动态对象键?使用角度日历事件

使用Dapper映射嵌套对象

如何使用 dapper 映射多个列表

如何使用自动映射器从嵌套列表映射到目标对象?

从 JSON 对象读取嵌套映射时如何使用全局值

如何映射对象列表

如何在 Javascript 中映射嵌套对象?

如何映射嵌套对象数组?

如何使用 Automapper 或 LINQ 将具有嵌套列表的对象映射到对象列表?

如何映射深度嵌套的对象数组?