3

我正在使用具有 Loquacious ValidationDef 配置样式的 NHibernate.Validator。对于我的所有规则,当值无效时,我使用 WithMessage 设置自定义消息。这些消息是我用来查找要显示的正确消息的代码,具体取决于上下文和语言。

我可以在调用时收到这些消息ValidatorEngine.Validate(entity),但是在使用 NHibernate 保存实体时,我收到一个 InvalidStateException ,但没有说明它为什么无效的详细信息。

那么,在捕获 NHibernate 保存期间抛出的 InvalidStateException 后,如何获取我的验证消息?

4

1 回答 1

6

消息在异常中,只有一个方法调用。您需要在异常上调用 GetInvalidValues()。

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

他们之所以没有直接将其放入Message的异常中,可能是因为可以有多个验证结果。

于 2011-12-30T21:35:25.960 回答