Dapper ORM不接受多重模型

问题描述 投票:0回答:1

我有一个问题,就是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();

        }
    }
database orm dapper
1个回答
0
投票

如果结果集包含两个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...");

这将返回一个动态列表,其中每个记录都包含一个QueueItems和Robot属性。

Dapper默认在“ Id”列上分割。如果您的查询返回这样的记录集:

|Id|C1|C2|C3|Id|C4|C5

Id,C1,C2和C3将映射到queueItem,Id,C4和C5将映射到机械手。

© www.soinside.com 2019 - 2024. All rights reserved.