Первый фон,
В настоящее время я работаю над сравнительно большим приложением Asp.Net MVC, которое я старался, насколько это возможно, разрабатывать на основе доменной модели, используя хорошие принципы проектирования. Мы обязаны делать все доступ к базе данных через хранимые процедуры (Oracle). В этом приложении у меня есть множество контроллеров, которые используют служебные объекты для выполнения бизнес-логики и, в свою очередь, обращаются к объектам репозитория для обеспечения доступа.
Мне только что сообщили, что dba требует передачи нескольких общих параметров в каждую хранимую процедуру в дополнение к параметрам, необходимым для извлечения / обновления / вставки данных. Эти параметры включают в себя имя пользователя, IP-адрес и домен пользователя, отправляющего исходный веб-запрос. Эти данные затем используются каждой хранимой процедурой для вызова функций, которые регистрируют доступ и проверяют, есть ли у пользователя разрешения на выполнение этой конкретной хранимой процедуры.
Я попытался мягко объяснить, что я чувствую, что это плохой дизайн и что приложение .Net может просто вызывать хранимые процедуры, предназначенные для регистрации и проверки разрешений, когда это необходимо. К сожалению, эта методология хорошо зарекомендовала себя в среде, и dba не желает ее менять.
Итак, теперь на мой вопрос,
Есть ли у кого-нибудь хорошие идеи о том, как я могу получить эти дополнительные параметры и доставить их объектам репозитория, не создавая большого беспорядка? Из того, что я могу сказать, эти данные доступны только из веб-контекста, когда на уровне контроллера. Это означает передачу дополнительных данных классу на уровне сервиса и затем каждому классу репозитория. Я бы хотел максимально уменьшить боль здесь.