Я не понимаю, каким образом можно защитить любую библиотеку на основе SQL от злоупотребления developer без ущерба для ее функциональности (т. Е. Никогда не предоставлять прямой доступ к базе данных).
Даже с NHibernate или Linq to SQL можно обойти слои отображения и напрямую написать оператор SQL.
Лично я думаю, что лучшим вариантом было бы написать БОЛЬШОЙ ЖИРНЫЙ ТЕКСТ , что люди, которые используют вашу библиотеку, должны ПАРАМЕТРИРОВАТЬ ИХ ЗАПРОСЫ . Если это не удастся, вы можете попытаться выполнить некоторую неуклюжую очистку входных данных, но это, честно говоря, хрупкий второсортный взлом.
Параметризованные запросы существуют уже так давно, что ни у кого нет оправдания написанию кода, который затрагивает любую базу данных, чтобы не знать об этом или не понимать, как его использовать. Единственное лекарство от невежества - это образование.
Возможно, если бы мы знали больше о том, что эта библиотека должна делать в отношении доступа к данным, мы могли бы предложить более целенаправленные предложения ...