これは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 つのフィールドを更新するだけなので、エンティティ全体をロードしないことをお勧めします。