NHibernateバリデーターの使い方を学んでいます。FluentAPI(Loquacious)です。
整数プロパティまたはnull許容intプロパティ(int?)をnull許容に設定できないことに気づきました。さて、なぜですか?
データベースでは、整数列はnull値を持つことができます。さらに悪いことに、SchemaExportを使用してDDLを生成すると、整数列はその非null可能性を取得しません(Nhibernateマッピングで表現しない限り)。
NHibernateバリデーターの使い方を学んでいます。FluentAPI(Loquacious)です。
整数プロパティまたはnull許容intプロパティ(int?)をnull許容に設定できないことに気づきました。さて、なぜですか?
データベースでは、整数列はnull値を持つことができます。さらに悪いことに、SchemaExportを使用してDDLを生成すると、整数列はその非null可能性を取得しません(Nhibernateマッピングで表現しない限り)。
あなたはすでに答えを出しました。バリデーターはスキーマエクスポートによってスキャンされません。マッピングを使用する必要があります。
を使用してバリデーターを指定するとValidatorDef<>
、これはスキーマエクスポートによって検出され、適切なSQL定義を取得します。例:
public class InvoiceValidationDef : ValidationDef<Invoice>
{
public InvoiceValidationDef()
{
...
Define(x => x.Description).NotNullable().And.MaxLength(255);
...
}
}
結果は
create table Invoices (
...
Description NVARCHAR2(255) not null,
...
)
NHibernateValidatorはNHibernateの上にあります。NHibernateマッピングおよびカスタムルールに対してエンティティを検証するために使用されます。null許容かどうかなどのフィールドプロパティを設定する場合、これはNHibernateマッピングで実行されます。これは、実行される検証だけでなく、生成されるSQLステートメントにも影響を与えるためです。