当我有这个简单的模型时:
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
从数据库中获取该属性时为空(没有延迟或急切加载)。
但是我该如何改变这种行为呢?
- 我不想完全禁用验证
- 我不想懒惰/急切地加载该字段
- 我不想从模型中删除必需标签
还有哪些其他选择?