2011-03-30 30 views
1

的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財產?

我放在二傳手斷點,但在調試過程中不會被調用。沒有構造函數可以設置這個值。

回答

2

Linq to sql類從核心對象繼承,並取決於如果您使用EF或LINQ到SQL使用代理類來填充。

你有沒有試圖改變私人財產「_SourceSafeVersionNum」有一個get然後設置斷點私有基礎變量?公共設置程序適用於您的應用程序設置變量以便跟蹤更改。如果在從數據庫填充時使用了這些屬性,則所有屬性在加載時都會觸發OnPropertyChanged。

+0

我將_SourceSafeVersionNum更改爲屬性,並且在訪問測試支持字段時確實發生中斷。我以爲_SourceSafeVersionNum是支持領域,而不是一個屬性。爲什麼沒有一個吸氣和二傳手,如果它是一個屬性? – Jason 2011-03-30 17:05:36

+0

這是特定於實例的私人財產。獲取者和設置者實際上爲這些私人財產提供了一個入口/返回點。今天這個對我們來說是隱藏的,當我們寫public int MyProperty {get;組; } .NET實際上爲我們管理私有財產。當你添加一個get和一個set時,它會爲要存儲的值創建一個單獨的私有實例屬性。ie _SourceSafeVersionNum是信息實際駐留在內存中的類的生命。 – Gats 2011-03-30 17:27:25

+0

您是否有關於.NET如何管理這些私有屬性的描述?我想更多地瞭解它們以及它們如何用於對象構建。 – Jason 2011-03-30 23:54:21

1

假設SourceSafeVersionNumExamVersions物業時的查詢結果進行評估,應當設置和物化其中發生在這裏:

return query.ToList(); 

當然,如果在一個空列表查詢結果的財產將不設置,因爲沒有對象可以設置它。