Поддерживает ли они подготовку запроса или каждый запрос компилируется по новой?
Я правильно понимаю, что если соединение закрыто, то он его открывает на время выполнения запроса, а потом закрывает? Если соединение изначально открыто, то оно поддерживается, пока я сам его не закрою?
В Dapper можно делать такое Execute("INSERT INTO Table(f1,f2) values(@f1,@f2)",List)
где List- это список из нескольких объектов для вставки. Он будет по 1 записи вставлять или генерировать запросы из N строк List'a и вставлять?
Компиляцией запросов занимается БД. Если говорить о подготовке, то нет, Даппер не подготавливает запросы. Однако есть некоторый внутренний кэш, который позволяет быстрее материализовывать объекты. При этом если вы используете параметры и выполняете один и тот же запрос много раз, кэш это учтет.
Dapper caches information about every query it runs, this allow it to materialize objects quickly and process parameters quickly.
Как верно отметил @vitidev, Даппер предоставляет методы расширения для соединения. Раньше он действительно не занимался управлением состояния соединения и требовал открытого соединения. Однако сейчас он открывает закрытые соединения (раз, два) и, соответственно, закрывает их. При этом ему по-прежнему можно передавать открытое соединение и документация ко многим методам до сих пор гласит, что требуется открытое соединение.
Да, можно. Насчет того, как именно выполняется такая операция, не скажу. Надо или читать исходники, или пробовать и смотреть в профайлере. (Если вдруг нужно использовать bulk insert, есть дополнение Dapper Plus.)
connection.Execute(@"insert MyTable(colA, colB) values (@a, @b)",
new[] { new { a=1, b=1 }, new { a=2, b=2 }, new { a=3, b=3 } }
).IsEqualTo(3); // 3 rows inserted: "1,1", "2,2" and "3,3"
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Учусь C#, читаю чужой код и возник вопрос, что обозначают {0} таким символом, это элемент массива? Вот весь кусок
За счет чего можно достигнуть высокой производительности в DataTable при поиске в ней?
Из названия понятна суть проблемыИнтересует какова временная сложность алгоритма метода AddRange() списка в C#?
Использую C#, SeleniumWebdriver, фреймворк Atata, PhantomJS