2013-01-07 47 views
0

我在想,有沒有什麼辦法確定CodeFirst財產的加載順序,比如我有一個類象下面這樣:!如何確定CodeFirst中的屬性加載順序?

public Class 
{ 
public string Propert1{get;set;} 
public string Propert2{get;set;} 
public List<string> PropertList{get;set;} 
} 

,我需要做EF到property1之前加載ProprtyList(因爲我在Property1_Changed上操作ProprtyList值)。

回答

0

一個屬性應該只是:一個屬性。即你得到或設置它,沒有別的,沒有副作用。我知道即使是一些.Net類違反了這個規則,但它仍然是一個非常健康的原則。另一個原則是,應該設置對象的屬性的順序無關緊要。這是因爲設置任何單個屬性都應使對象保持有效狀態。

因此,考慮你的Class對象,EF實現它的方式,以使其有效。 然後你可以開始修改它。如果您想修改多個屬性同時更改對象,您應該通過調用具有描述性名稱的方法來完成此操作,而不是通過設置一個屬性並以靜默方式更改其他屬性。

如果你想要的是一種基於PropertList不同的內容列表,請只讀(未映射)財產或在其中產生改變的內容的GetXyz()方法(無需修改PropertList!)並返回。

0

然後,您可以將PropertList聲明爲只讀。

public Class 
{ 
public string Propert1{get;set;} 
public string Propert2{get;set;} 
public List<String> PropertList{ 
     get{ 
      return genaratePropertyListFromProperty1(); 
     } 
} 
} 

這裏prpertyList只有在它被訪問時纔會被填充。

+0

我不能讓它只讀。它是一個導航屬性。 –

+0

那麼,爲什麼你需要操作Property1_Changed上的'ProprtyList值,如果它直接從數據庫中加載? –