database - Dapper ORM 不接受多个模型
问题描述
我遇到了一个问题,Dapper 不接受多个模型,请参阅我的代码示例。我在查询中有 QueueItems 和机器人模型,但是当我添加第二个(机器人)时,我收到以下错误“IDBconnection 不包含查询的定义”
public void getdata()
{
using (IDbConnection connection = new SqlConnection(con))
{
string sql = "Select * from QueueItems";
var queryResult = connection.Query<QueueItems,Robots>(sql).ToList();
}
}
解决方案
如果您的结果集包含两个 pocos 的列,则必须将它们包装在一个信封(类型化类或动态)对象中,因为您只能返回一种类型。
方法签名是
var result = connection.Query<QueueItems,Robots,dynamic>(sql, (queueItem,robot) => {
dynamic d = new ExpandoObject();
d.QueueItem = queueItem
d.Robot = robot;
return d;
}, splitOn: "...insert split columns unless they're named Id...");
这将返回一个动态列表,其中每条记录都包含一个 QueueItem 和 Robot 属性。
默认情况下,Dapper 在“Id”列上拆分。如果您的查询返回这样的记录集:
|Id|C1|C2|C3|Id|C4|C5
Id、C1、C2 和 C3 将映射到 queueItem,Id、C4 和 C5 将映射到机器人。
推荐阅读
- php - 使用 PHP 从 MariaDB 中提取数据并生成分层 JSON - 文件夹的树形视图
- javascript - document.getElementById().click(); 不能在手机上工作
- r - (R) 如何在 ggplot2 中根据颜色、线型和点形状获取图例?
- git - IntelliJ:为什么在我运行 Kotlin 文件时会创建这些文件以及如何忽略它们?
- pandas - 无损训练集,准确率低
- cmake - 控制传递给生成器的标志
- javascript - nodejs中文件夹的哈希
- c# - 重复键值违反唯一约束 EF 核心
- arrays - C - 当我尝试将结构从数组复制到结构中包含的数组时出现问题
- c# - SignalR C# 客户端错误:FormatException:已识别项目之一的格式无效