Как создать пользовательский валидатор в VAB, который тестирует два свойства одновременно? - PullRequest
0 голосов
/ 06 декабря 2008

В моей базе данных у меня есть составное ограничение уникального ключа (CustomerId, Name) для объекта. Я хочу проверить, соблюдается ли уникальное ограничение перед отправкой изменений в базу данных. Пользователь может настроить атрибут Name для сущности, поэтому я хотел бы создать собственный валидатор, который проверяет свойство name, но при этом мне также необходим доступ к свойству CustomerId. Как мне это сделать?

Я использую WCSF, что означает, что я застрял в Entlib 3.1 и включенном VAB, но я думаю, что можно переключиться на VAB EntLib 4.1 без нарушения WCSF.

С уважением, Эгиль.

1 Ответ

0 голосов
/ 19 февраля 2010

Хитрость заключается в том, чтобы создать валидатор для вашей сущности, а не для одного из свойств этой сущности. Вы можете написать самопроверку вашей сущности следующим образом:

[HasSelfValidation]
public class MyEntity
{
    public int CustomerId { get; set; }
    public string Name { get; set; }

    [SelfValidation]
    public void ValidateRange(ValidationResults results)
    {
        bool isUnique = [query the database here]

        if (!isUnique)
        {
            results.AddResult(new ValidationResult(
                "CustomerId and Name are not unique", this, "", "", null));
        }
    }
}

Я должен сказать, что я не знаком с набором функций VAB 3.1, поэтому я не уверен на 100%, что это работает на 3.1. Это работает на 4.1, хотя. Если вам не нравится самопроверка, вы также можете написать собственный валидатор и подключить его в файле конфигурации. Посмотрите этот ответ на стекопоток для получения дополнительной информации о том, как это сделать.

...