Я получил эту же ошибку при использовании явно невинного запроса LINQ to SQL. Я просто хотел получить все записи, чьи идентификаторы были среди тех, которые хранятся в массиве:
dataContext.MyTable.Where(item => ids.Contains(item.Id)).ToArray();
Оказалось, что массив ids содержал более 2100 элементов, и кажется, что DataContext добавляет один параметр для каждого элемента в массиве в результирующем запросе SQL.
В конце это была ошибка в моем коде, так как в массиве ids не должно было быть так много элементов. Но в любом случае стоит помнить, что при использовании таких конструкций в LINQ to SQL требуется дополнительная проверка.