Запрос очень быстрый, но медленное отображение с dapper

Я использую dapper для нового проекта и люблю его, но я не понимаю, почему мои запросы очень медленные. Время выполнения очень быстрое, почти мгновенное, но соединение остается открытым намного дольше, в то время как dapper сопоставляет результат с моим объектом, который я предполагаю.

Вот пример:

Glimpse result

Этот запрос - это просто SELECT для чего-то вроде 15 полей с первичным ключом, поэтому он очень быстро выполняется, и он не возвращает большую часть данных. Мой код для его выполнения:

 using (var conn = GetConnection())
 {
    obj = conn.Get<T>(id);
 }

И объект является очень простой poco с Strings и Ints. Итак, почему я трачу 220 мс на это, а сам выполнение запроса занимает 3 мс? Где разница?

Спасибо за вашу помощь!

Ответ 1

У меня был аналогичный опыт с Dapper, поскольку я пытался создать проект из объекта View в POCO. Проблема заключалась в том, что для меня не было столбца для каждого свойства моего объекта, поэтому Convert.ChangeType() был очень медленным. Я добавил столбец в свой вид, который всегда возвращает NULL, а вызов Query() ускоряется.

Ответ 2

ОБНОВЛЕНИЕ

Было одно поле, которое вызывало проблемы для меня в части выбора моего оператора SQL. Я просто удалил каждое поле по одному, а затем нашел тот, который вызывал проблему.

Мне пришлось наложить одно из полей на nvarchar следующим образом:

CAST(my_field AS nvarchar(max)) as my_field

ОРИГИНАЛЬНЫЙ ОТВЕТ

Он должен что-то сделать с отображением. Потому что, если я изменю его с "Сильно типизированного" (который принимает навсегда, почти 1 минута):

var products = connection.Query<Product>(sql).ToList();

в "Анонимный":

var products = connection.Query(sql).ToList();

то он выполняется очень быстро (1 секунда).

Я попробовал и выполнил инструкцию SQL непосредственно в "SQL Server Management Studio" в качестве запроса, и он заканчивается менее чем за 1 секунду.

Итак, мое предложение, что вы используете "анонимное сопоставление", пока ребята-dapper не исправят это, если они смогут.