向實體框架添加自定義屬性?

asp.net c# entity-framework linq

我是第一次使用實體框架,並想知道以下是否可行 - 我已經從數據庫中生成了我的類,並且有一個名為Category的類。

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

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

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

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

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

希望這有道理嗎?

一般承認的答案

你應該使用partial類:

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

這樣this.CategoryName將按預期工作。

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


熱門答案

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



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因