2010-10-19 163 views
18

我第一次使用實體框架,並想知道以下是否可能 - 我已經從數據庫中生成了我的類,並且有一個名爲Category的類。添加自定義屬性到實體框架?

很明顯,它有表中的所有字段(ID,CategoryName,SortOrder等),但我想知道是否可以添加不在表中的自定義屬性,但實際上是自定義的結果方法。

我想添加一個名爲'CategoryURL'的新屬性,它基本上是通過自定義方法運行的'CategoryName'屬性並返回一個帶連字符的字符串。

我最初的想法是從生成的Category類繼承並在裏面創建類似的東西?

public string CategoryURL 
{ 
    get{ return MyCustomMethod(this.CategoryName) } 
} 

這是正確的方法嗎? 'this.CategoryName'會按我的想法工作嗎?基本上最終的結果是當我返回'類別'的列表我希望這是類的一部分,所以我可以在我的foreach循環中使用它。

希望這有意義嗎?

回答

19

你應該使用partial類:

public partial class Category 
{ 
    public string CategoryURL 
    { 
     get{ return MyCustomMethod(this.CategoryName); } 
    } 
} 

這樣this.CategoryName預期將只是工作。

這是可行的,因爲實體框架代碼生成器生成的類也生成partial類。這也意味着您可以安全地從數據庫重新生成類,而不會影響您自己定義的部分類。

+0

優秀感謝 – leen3o 2010-10-19 11:09:26

+0

這就是聰明!某種程度上,它有點令人毛骨悚然,因爲它看起來太聰明瞭。我們有什麼理由相信微軟可能會在未來的EF版本中打破這一點?我想我應該擔心得太多,因爲這個答案差不多四年了,而且它對我來說很有用! – 2014-10-15 17:25:47

9

您應該[NotMapped]屬性添加到屬性