Dapper ORM не принимает несколько моделей - PullRequest
0 голосов
/ 25 мая 2020

У меня проблема из-за того, что 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();

    }
}

1 Ответ

0 голосов
/ 26 мая 2020

Если ваш набор результатов содержит столбцы для двух pocos, вам придется заключить их в объект конверта (либо типизированный класс, либо c), поскольку вы можете вернуть только один тип.

Метод подпись для этого:

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...");

Это вернет динамический c список, в котором каждая запись содержит свойство QueueItem и Robot.

Dapper по умолчанию разбивается на столбец «Id». Если ваш запрос возвращает такой набор записей:

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

Id, C1, C2 и C3 будут сопоставлены с queueItem, Id, C4 и C5 будут сопоставлены с роботом.

...