30

私はEF Code Firstを使用しています。私はコードアノテーションを大量に使って、データ(モデル)の検証方法を指定します。しかし、しばしば、UIレイヤーでの検証が必要なだけであり、特定のデータをコード内のデータベースに保存すると、検証を抑制することができます。ただし、検証ルールを指定すると、UI、データベース、データアクセスレイヤーのどこにでも適用されます。Entity Framework/MVC3:検証を一時的に無効にします

EFレイヤーでモデルバリデーションを一時的に無効にすることができるので、検証例外を取得することなくSaveChanges()を使用してデータを保存できますか?

答えて

57

SaveChanges()を呼び出す前に、コンテキストクラスにConfiguration.ValidateOnSaveEnabled = falseを設定するだけで済みます。

context.Configuration.ValidateOnSaveEnabled = false; 
context.SaveChanges(); 
+0

クール、試してみます。ありがとうございました! –

+0

私はこの週前に見つけたかったです。一括輸入に最適です。 – sreimer

+0

これはとても役に立ちます! MVC 4とEF 6でも動作します。私はLotus Notes DBから変換されたデータでいっぱいのSQL Server DBを持っています。私は、アプリケーションにステータスカラムを "Archived"または "Deleted"に設定させてから、データを最初に訂正することなく(彼らはもはや行を使用しないようにする)必要がありました。 .SaveChanges()を実行する前にValidateOnSaveEnabledをfalseに設定すると、完璧に動作しました! –

関連する問題