NHibernate.Validator: при сохранении сущности мои пользовательские сообщения недоступны, как их получить? - PullRequest
2 голосов
/ 23 ноября 2011

Я использую NHibernate.Validator со стилем конфигурации Loquacious ValidationDef. Для всех моих правил я использую WithMessage, чтобы установить пользовательское сообщение, когда значение недопустимо. Сообщения - это коды, которые я использую для поиска правильного сообщения для отображения в зависимости от контекста и языка.

Я могу получить эти сообщения при вызове ValidatorEngine.Validate(entity), но при сохранении сущности с помощью NHibernate я получаю исключение InvalidStateException без подробных объяснений, почему оно недействительно.

Итак, как мне получить сообщения проверки после перехвата InvalidStateException, генерируемого во время сохранения NHibernate?

1 Ответ

5 голосов
/ 31 декабря 2011

Сообщения находятся в исключении, только вызов метода. Вам нужно вызвать GetInvalidValues ​​() для исключения.

try
{
    // Flush NHibernate to invoke event listeners
}
catch (InvalidStateException invalidStateException)
{
    InvalidValue[] invalidValues = invalidStateException.GetInvalidValues();
    Console.WriteLine(string.Join<InvalidValue>("\n", invalidValues));
}

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

...