NHibernate.Validator: при сохранении сущности мои пользовательские сообщения недоступны, как их получить?
Я использую NHibernate.Validator со стилем конфигурации Loquacious ValidationDef. Для всех моих правил я использую WithMessage, чтобы установить пользовательское сообщение, когда значение недопустимо. Сообщения - это коды, которые я использую для поиска правильного сообщения для отображения в зависимости от контекста и языка.
Я могу получить эти сообщения при звонке ValidatorEngine.Validate(entity)
, но при сохранении сущности с помощью NHibernate я получаю исключение InvalidStateException без подробной информации о том, почему оно недействительно.
Итак, как я могу получить свои сообщения проверки после перехвата InvalidStateException, генерируемого во время сохранения NHibernate?
1 ответ
Сообщения находятся в исключении, только вызов метода. Вам нужно вызвать GetInvalidValues () для исключения.
try
{
// Flush NHibernate to invoke event listeners
}
catch (InvalidStateException invalidStateException)
{
InvalidValue[] invalidValues = invalidStateException.GetInvalidValues();
Console.WriteLine(string.Join<InvalidValue>("\n", invalidValues));
}
Причина, по которой они не поместили его непосредственно в Сообщение об исключении, возможно, заключается в том, что может быть несколько результатов проверки.