2012-06-20 204 views
1

我使用C#2010實體框架代碼首先 使用OnPropertyChanged如果我有一個通過代碼與實體框架代碼首先

產生這樣

partial class test  
{ 
     public double value1; 
     public double value2; 
     public double value3; 
     public double totals; 
} 

類,我怎麼能創造局部類calc下合計

partial class test  
{ 
     public double totals { get { return value1 + value2 + value3; } } 

1 - 您知道更改生成的類是不切實際的。 2 - 無法部分定義財產總計。 3 - 使用元數據類不會更新總計,直到savechanges。

我會很感激,如果任何人都可以定義我怎麼能實現OnpropertyChanged並用來解決這個問題

感謝

回答

0

你的第二類屬性缺失「獲取」的文章:

​​

或者你可以定義一個Total()方法。

據我可以告訴你的問題(「我怎麼可以創建部分類到計算總數」),你不需要使用OnPropertyChanged因爲總計屬性/方法將運行計算每次與新總值中的值。您可以從原始類中刪除該字段,因爲它是一種計算,實際上不應該存儲。

如果您必須實際更新數據庫中的總值,您可以按照建議使用OnPropertyChanged部分方法。你需要使用屬性來調用新的方法:

partial class test 
{ 
    public double Value1 
    { 
     get { return value1; } 
     set 
     { 
      value1 = value; 
      Onvalue1Changed(value); 
     } 
    } 

    partial void Onvalue1Changed(double value) 
    { 
     UpdateTotals(); 
    } 

    private void UpdateTotals() 
    { 
     totals = value1 + value2 + value3; 
    } 
} 

你應該把原來的領域私有的,只能提供通過屬性的公共訪問。這不僅是更好的代碼設計,而且還允許您實現所需的功能類型。

當然,您可以遵循其他模式,但這應該讓您開始。

+0

如果value1或value2或value3發生更改,我需要更新總計。我也無法從原始類中刪除總數,而它是由ef自動生成的,並且存在於數據庫中 – Sam1970

+0

髒的數據庫設計...好吧,在這種情況下,您可以在部分類中定義部分的OnPropertyChanged方法(例如Onvalue1Changed(雙值))。這裏解釋得很好:http://msdn.microsoft.com/en-us/library/cc716747.aspx – kad81

+0

我先使用代碼。你能給我例子,我怎麼可以添加Onpropertychanged到我的部分類。你附加的例子是EntityObject – Sam1970