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));
}

例外のメッセージに直接入れなかった理由は、おそらく複数の検証結果が存在する可能性があるためです。

于 2011-12-30T21:35:25.960 に答える