c# - 没有子查询的 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 教程非常复杂并且包含子查询,但理想情况下我的查询不应该更改,因为它已经返回了应该映射到新结构的所有数据。
有任何想法吗?
解决方案
您必须创建自己的自定义类型映射器。我在这里写了一篇文章和一些示例:
https://medium.com/dapper-net/custom-type-handling-4b447b97c620
推荐阅读
- android - Google Play 警告我的构建“不允许任何现有用户升级”
- python - 如何将集合的每个元素传递给函数?
- python-3.x - Errno 24 打开的文件太多
- streamlit - 如何将 streamlit UploadedFile 写入具有原始文件名的临时目录?
- javascript - 使用CSS和Jquery显示另一个可变宽度的div时如何滑动div?
- ruby - 使用 Ruby / Nokogiri 解析随机类名
- r - 找不到 R“Winsorize”
- python - 更改 WTForms-SQLAlchemy QuerySelectField 中的选项标签
- amazon-web-services - Terraform:在一个环境中构建资源
- excel - 生成数据透视表时如何在录制的宏 (VBA) 中使用动态源数据