dapper - 使用 Split-on 和 Query Multiple 在 dapper 中映射多个对象
问题描述
考虑角色-员工-地址
一个员工只能有一个角色,但可以有多个地址。所以使用 split on 效率不高,因为我们可能会得到角色和员工的重复。我们可以使用查询多个,但我觉得如果有一种方法可以将角色和员工一起捕获到一个结果中并在另一个结果中处理,那会更好。
在这种情况下,我们可以直接在一个查询中加入并在映射时拆分某个列,而不是分别返回角色和员工。
我期待这样的事情
string query = "StoredProcedure";
using (var multi = connection.QueryMultiple(query, null))
{
empRole = multi.Read<Employee,Role>().Single().SplitOn("Id");
add = multi.Read<Address>().ToList();
}
有什么方法可以同时使用这两种技术吗?
解决方案
正确,您需要 Dapper 本身不支持的一对多映射,但如果您使用的数据库支持 JSON,则可以轻松实现。这是我写的一篇文章(连同工作示例),展示了如何使用 SQL Server / Azure SQL 来完成它:
https://medium.com/dapper-net/one-to-many-mapping-with-dapper-55ae6a65cfd4
推荐阅读
- sql - 刷新后为开发环境打乱数据以隐藏/屏蔽敏感数据
- r - 用 N/A 替换 Data-Frame 中的特定数值
- python - 为什么我们要在 python 正则表达式中使用 re.purge()?
- java - 将整数放入 xpath 的引号中
- c# - 将用户角色从身份添加到自定义数据库
- file - 你如何打开一个很可能是二进制文件的 LUA 文件?
- python - PyO3中对象向量的垃圾收集
- protractor - 上传文档不能作为持续集成竹的一部分
- sitemap - 具体 5 站点地图生成器因错误而停止?
- ms-access-2013 - MS Access 2013 使用 VBA 打开 ODBC 数据库