Правильный метод удаления более 2100 строк (по идентификатору)с помощью Dapper

Я пытаюсь использовать Dapper для поддержки моего доступа к данным для моего серверного приложения.

В моем серверном приложении есть еще одно приложение, которое сбрасывает записи в мою базу данных со скоростью 400 записей в минуту.

Мое приложение извлекает их пакетами, обрабатывает, а затем удаляет из базы данных.

Поскольку данные продолжают поступать в базу данных во время обработки, у меня нет хорошего способа сказать delete from myTable where allProcessed = true.

Однако я знаю значение PK удаляемых строк. Итак, я хочу сделатьdelete from myTable where Id in @listToDelete

Проблема в том, что если мой сервер выйдет из строя хотя бы на 6 минут, мне нужно будет удалить более 2100 строк.

Поскольку Dapper берет мой @listToDelete и превращает каждый из них в параметр, мой вызов для удаления завершается ошибкой. (Из-за чего моя очистка данных еще больше отстает.)

Как лучше всего решить эту проблему в Dapper?

ПРИМЕЧАНИЯ:Я просмотрел табличные значения параметров, но, насколько я вижу, они не очень производительны . Эта часть моей архитектуры является узким местом моей системы, и мне нужно быть очень очень быстрым.

10
задан Community 23 May 2017 в 12:25
поделиться