Entity Framework には、変更を追跡するモデルごとに Proxy クラスを生成するオプションがあります。基本的に、オブジェクトを自己追跡プロパティでラップします。
基本的に、次のような実装を想像できます (実際の内部構造はわかりませんが、これは理論に少し役立つはずです。それがどのように行われたかを正確に確認したい場合は、逆コンパイルできます)。
internal List<string> ChangedFields = new List<string>();
private string _name;
public string Name
{
get { return _name; }
set {
ChangedFields.Add("Name");
_name = value;
}
}
明らかに、これがフィールドごとに複製されるため、変更を加えた各フィールドは で追跡されChangedFields
ます。
繰り返しますが、これは純粋に明示get
的な/set
でプロパティを使用してどのように機能するかを説明するためのものであり、特に Entity Framework がどのように機能するかではありません。