Как вы сказали, SQLite реализует блокировку на уровне файла БД.
Dapper или любой другой полный или микро ORM не может изменить этот факт. Ни один ORM не будет реализовывать управление потоками или параллелизм для любой СУБД. За управление потоками отвечает пользователь.
Думай иначе. Как ORM узнает, как реализовать многопоточность?
Да; некоторые ORM управляют соединением до определенного уровня. Но в основном это ограничивается только созданием / открытием / утилизацией. ORM не контролируют потоки или параллелизм. Это то, что должно быть реализовано пользователем.
Ответ на ваш комментарий:
но все же остается вопрос, что делает dapper в таких случаях, поскольку у него может быть какая-то логика повторных попыток выполнить запрос еще раз в случае блокировки
Дэппер не делает ничего подобного. Dapper работает точно (ну ... почти) как ADO.NET. Для любой запрашиваемой части Dapper не сильно отличается от ADO.NET.
Итак, чтобы ответить на ваш комментарий, если какой-либо поставщик ADO.NET реализует логику повторных попыток, он будет унаследован Dapper автоматически. Но Даппер сам по себе не реализует такую логику.
Если я правильно угадаю, ADO.NET выдаст правильное исключение - Даппер просто передаст вам это исключение.
Надеюсь этот ответ поможет вам.