这似乎是 CodeFirst 的一个非常奇怪的行为,
我有一张桌子:
public string Name {get;set;}
[Required]
public virtual Table1 Table1 {get;set;}
[Required]
public virtual Table2 Table2 {get;set;}
[Required]
public virtual Table3 Table3 {get;set;}
现在,如果我从数据库中得到这样的一行:
var row = database.Include("Table1").First();
row.name = "New name";
row.Table1.name = "New name";
database.SaveChanges();
它会抛出2个错误:
Table2 : The Table2 field is required.
Table3 : The Table3 field is required.
问题是,为什么它会验证这 2 个未加载的未使用的引用?
我不希望加载整个实体,因为某些实体可以有很多引用,只更新 1 个字段。