没有子查询的精巧的复杂映射

时间:2018-05-25 15:32:01

标签: c# sql dapper

如果我有像

这样的对象
class Thing
{
 public string A { get; set; }
 public string B { get; set; }
 public string C { get; set; }
 public string D { get; set; }
}

Dapper非常适合:

return conn.QuerySingle<Thing>(
    @"SELECT A, B, C, D
      FROM [Thing] WHERE Id = @id", new { id });

但是如果我的班级结构是

那该怎么办?
class Thing
{
 public string A { get; set; }
 public string B { get; set; }
 public IEnumerable<Stuff> { get; set; }
}

class Stuff
{
 public string C { get; set; }
 public string D { get; set; }
}

我如何让Dapper映射到该结构,假设Enumerable将始终在Enumerable中包含1个项目,所以实际上我只是以不同的方式表示相同的数据。

我见过的Dapper教程非常复杂并且包含子查询,但理想情况下我的查询不应该更改,因为它已经返回应该映射到新结构的所有数据。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您必须创建自己的自定义类型映射器。我在这里写了一篇文章和一些样本:

https://medium.com/dapper-net/custom-type-handling-4b447b97c620