DbContext
データベース ファースト(EF4.3.1 & MVC3)で検証はどのように機能しますか?
私はこれをやっています(はい、VBです):
If ModelState.IsValid Then
db.SaveChanges()
しかし、次のメッセージがSaveChanges
スローされます。DbEntityValidationException
1 つ以上のエンティティの検証に失敗しました。詳細については、「EntityValidationErrors」プロパティを参照してください。
適切な検証メッセージでビューが再び返されることを期待していますが、なぜそのように機能するのかがわからないため、何かが欠けていることは明らかです! Google が助けてくれることを期待するでしょうが、ほとんどの例はコード ファーストのようです。
これはデータベース ファーストなので、モデルが生成されています。検証制約も生成されることを期待していましたが (少なくとも SQL Server の NOT NULL のような単純なもの)、うまくいかないようです。
奇妙なことに、一部のフィールドは期待どおりに機能し、他のフィールドはそうではありません。
たとえば、データベースに null 非許容のテキスト フィールドがあります。EF デザイナーおよび生成されたコードでは、null 非許容として表示されます。しかし、送信すると、フィールドが強調表示されたフォームを返す代わりに例外が発生します。
一方、null 非許容の日付フィールドがあります。データベースを更新しようとする前にチェックされ、修正のためにフィールドが強調表示された状態でフォームが再度表示されます。