на уровне строки подключения вы ничего не можете сделать, кроме записи пользователя, кроме изменения пользователя - что вы уже сказали, что не можете сделать.
В этом случае вам просто нужно сделать все возможное, чтобы предотвратить любые записи; то есть:
- любые открытые слои не должны предоставлять семантику обновления / удаления / вставки или что-либо еще.
- делает все классы слоя данных запечатанными, чтобы их нельзя было переопределить
Тем не менее, ничто не мешает программисту приходить, вырывать строку подключения и вставлять ее в свое собственное соединение для выполнения записи.
Таким образом, вы можете переместить строку подключения в другое место, к которому только внутренний код знает, как получить к нему доступ (хотя она все еще будет управляться текстовым файлом, но не используйте константу кода!); это все еще никому не мешает его использовать - но это делает его намного сложнее.
(добавлено) Я должен объяснить, почему это не защищает его.
Если оставить в стороне, что источник самой строки подключения, вероятно, будет доступен, даже благодаря защите с помощью библиотек шифрования и т. Д., Ничто не мешает мне размышлять над вашим кодом и вызывать его, кроме уровней доверия. Возможно, вы решите пройти весь путь запутывания, чтобы я не смог разобрать ваш код; но наверняка этот уровень паранойи не требуется в вашем доме разработки?
В конечном счете, тем не менее, потому что это «SEP» (чья-то проблема), как вы выразились, и вы не можете это контролировать - если кто-то спросит вас, почему, несмотря на все ваши усилия, вы не можете гарантировать что никакие записи не будут выполняться, вы можете смело обвинять «кого-то еще».