2010-08-25 2 views
1

У меня есть настраиваемый атрибут, который обращается к базе данных с nhiberate. Атрибут фактически наследуется от атрибута AbstractValidationAttribute Castle и используется для проверки свойств по отношению к регулярным выражениям. Проблема в том, что эти регулярные выражения управляются и сохраняются в базе данных, а при изменении значений в базе данных они не отражаются в атрибуте. По сути, атрибут только инициализирует и сначала загружает из базы данных. Есть ли способ обойти это?C# Пользовательские атрибуты доступа к базе данных

Спасибо, Робин

ответ

0

В своей книге он чувствует себя немного странно иметь атрибут выполнения операций с базами данных. Тем не менее, объект атрибута создается при каждом вызове GetCustomAttributes, поэтому, если атрибут берет данные как часть его построения, он должен извлекать его, когда атрибуты проверяются с использованием этого метода.

+0

Это не так уж редко, если валидация должна пройти в базу данных. Когда вы смотрите на блок приложений проверки, он содержит метод «CreateValidator», который позволяет создать валидатор, который связывается с базой данных. Это позволяет хорошо разделять проблемы, но функциональный эффект одинаковый. Атрибут позволяет проверять, считывая базу данных. – Steven

+0

@Steven: Мне не кажется странным, что валидация зависит от БД, но мне немного странно обращаться к БД из класса атрибутов. –

+0

Есть ли лучший подход к этому, который обойдутся проблемой? – robinbetts

0

Атрибуты обычно ничего не делают. Это маркеры. Другой код должен использовать их для выполнения некоторой операции на основе данных, используемых в атрибуте.

Смежные вопросы