NHibernate.Validator:保存实体时,我的自定义消息不可用,我该如何获取它们?

时间:2011-11-23 11:22:57

标签: nhibernate fluent-nhibernate nhibernate-validator

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

他们没有直接将其置于异常消息中的原因可能是因为可能存在多个验证结果。