2012-04-03 9 views
0

EF 4.0でコードを最初に使用しています。 StringLengthという属性を使用してプロパティの長さの制約を定義しました。私は、指定された制約よりも長いデータを持つエンティティを追跡するContextのSaveChangesが検証例外をスローするという印象を受けました。 しかし、残念ながらそれは起こりません。 SaveChangesの前にGetValidationErrors()を実行すると、エラーが発生することがあります。誰かがこの光景がどのように働くべきか光を当てることができますか?保存時の有効性確認方法

更新:問題がどこにあるかを発見しました。 SaveChangesの影響を受けるエンティティを追跡するために、(IObjectContextAdapterを介して)DBContextの基本となるObjectContextを使用しています。私がDBContext.SaveChangesの問題に切り替えたときにObjectContextに対してSaveChangesが呼び出されました。解決されました。

+0

'dbContext.Configuration.ValidateOnSaveEnabled = false'をどこかに設定しましたか? BTW:EF 4.0はコードファーストを持っていません。使用しているバージョンを確認できますか?4.1から4.3(またはEF 5.0ベータ版)でなければなりませんか? – Slauma

+0

はい、ValidateOnSaveEnabledがtrueであることは絶対に確信しています。ランタイムバージョンv4.0.30319(バージョン4.0.0.0)でSystem.Data.Entity.dllを使用しています。コードには最初にGetValidationErrorsとValidateOnSaveEnabledの両方が含まれています。 –

+0

また、プロジェクトで "EntityFramework.dll"が参照されている必要があります。 "System.Data.Entity.dll"にはコードファーストが含まれていません。 Code-Firstは、別のアセンブリ "EntityFramework.dll"(* namespace * "System.Data.Entity"の拡張子も含む)の拡張です。知っておくべき重要なことは、 "EntityFramework.dll"のバージョンです。 – Slauma

答えて

1

見つかった問題はどこですか。 SaveChangesの影響を受けるエンティティを追跡するために、(IObjectContextAdapterを介して)DBContextの基本となるObjectContextを使用しています。私がDBContext.SaveChangesの問題に切り替えたときにObjectContextに対してSaveChangesが呼び出されました。解決されました。

関連する問題