Отображение нескольких объектов в dapper с использованием Split-on и Query Multiple вместе - PullRequest
0 голосов
/ 13 декабря 2018

Рассмотрим Роль-адрес сотрудника

Сотрудник может иметь только одну роль, но может иметь много адресов.Таким образом, использование разделения на неэффективно, так как мы можем получить дубликаты ролей и сотрудников.Мы можем использовать несколько запросов, но я чувствую, что если мы сможем собрать вместе роль и сотрудника в одном результате и обратиться к другому, тогда это будет лучше.

В этом случае вместо возврата ролии сотрудника по отдельности, мы можем напрямую объединить оба в одном запросе и разделить на некоторый столбец при отображении.

Я ожидаю что-то вроде этого

string query = "StoredProcedure";

using (var multi = connection.QueryMultiple(query, null))
{
    empRole = multi.Read<Employee,Role>().Single().SplitOn("Id");
    add = multi.Read<Address>().ToList();
}    

Есть ли способ, которым мы могли бы сделатькак использовать обе техники вместе?

1 Ответ

0 голосов
/ 13 декабря 2018

Правильно, вам нужно сопоставление «один ко многим», которое изначально не поддерживается Dapper, но может быть легко реализовано, если база данных, которую вы используете, поддерживает JSON.Вот статья, которую я написал (вместе с рабочими примерами), в которой показано, как это можно сделать с помощью SQL Server / Azure SQL:

https://medium.com/dapper-net/one-to-many-mapping-with-dapper-55ae6a65cfd4

...