この単純なモデルがある場合:
public class User
{
// Primary key
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UserId { get; set; }
[Required]
public Int32 FailedPasswordAttemptCount { get; set; }
[Required]
public Language Language { get; set; }
}
public class Language
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid LanguageId { get; set; }
[MaxLength(30)]
public String LocaleName { get; set; }
}
そして、私はこのコードを実行します:
var user = context.Users.Single(u => u.UserId == userId);
user.FailedPasswordAttemptCount++;
context.SaveChanges();
DbEntityValidationException
例外がスローされThe Language field is required.
ます。
Language
プロパティが必須としてマークされており、データベースからフェッチされたときにプロパティが null であるため (遅延ロードまたは積極的ロードではない) 、技術的にはこれは当てはまります。
しかし、どうすればこの動作を変更できますか?
- 検証を完全に無効にしたくない
- フィールドを遅延/熱心にロードしたくない
- モデルから Required タグを削除したくない
他にどのようなオプションがありますか?