LinqがSQL Serverに対してクエリを実行した後、オブジェクトのプロパティがいつ設定されますか?LINQ式が評価された後にプロパティの値が設定されるのはいつですか?
次のExamVersionクラスのプロパティは、LINQ to SQLクラス(.dbml)ファイルによって生成されました。
[Column(Storage="_SourceSafeVersionNum", DbType="Int", UpdateCheck=UpdateCheck.Never)]
public System.Nullable<int> SourceSafeVersionNum
{
get
{
return this._SourceSafeVersionNum;
}
set
{
if ((this._SourceSafeVersionNum != value))
{
this.OnSourceSafeVersionNumChanging(value);
this.SendPropertyChanging();
this._SourceSafeVersionNum = value;
this.SendPropertyChanged("SourceSafeVersionNum");
this.OnSourceSafeVersionNumChanged();
}
}
}
私はこのLINQクエリを実行した後:
var query = from examVersion in db.ExamVersions
where examVersion.ExamVersionID == ExamVersionID
select examVersion;
return query.ToList();
とき/ LINQはSourceSafeVersionNumプロパティを設定しないどこ?
私は設定ツールにブレークポイントを設定しましたが、デバッグ中は呼び出されません。この値を設定するコンストラクタはありません。 SourceSafeVersionNum
を想定し
_SourceSafeVersionNumをプロパティに変更しましたが、テストバッキングフィールドにアクセスすると実際に破損します。 _SourceSafeVersionNumはプロパティではなくバッキングフィールドであると私は思った。なぜそれが財産である場合ゲッターとセッターがないのですか? – Jason
これはインスタンス固有のプライベートプロパティです。 getterとsetterは、実際にはそれらのプライベートプロパティのエントリ/リターンポイントを提供します。今日、これは私たちから隠されていて、私たちがpublic intを書くときMyProperty {get;セット; } .NETは私たちのプライベートプロパティを実際に管理します。 getとsetを追加すると、値が格納される個別のプライベートインスタンスプロパティが作成されます。つまり、_SourceSafeVersionNumはメモリ内のクラスの存続期間中実際に情報が存在する場所です。 – Gats
.NETでこれらのプライベートプロパティを管理する方法についての説明がありますか?私はそれらについてもっと知りたいし、それらがオブジェクト構築にどのように使われているのか知りたいです。 – Jason