向实体框架添加自定义属性?

时间:2010-10-19 10:36:58

标签: c# asp.net linq entity-framework

我第一次使用Entity Framework并想知道以下是否可行 - 我已经从DB生成了我的类,并且有一个名为Category。

显然它在表中有我的所有字段(ID,CategoryName,SortOrder等..)但我想知道我是否可以添加一个不在表中的自定义属性,但实际上是自定义方法的结果

我想添加一个名为'CategoryURL'的新属性,它基本上是通过自定义方法运行的'CategoryName'属性,并返回一个带连字符的字符串。

我最初的想法是从生成的Category类继承并在里面创建这样的东西吗?

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

这是正确的做法吗? 'this.CategoryName'会像我认为的那样工作吗?基本上最终的结果是当我返回一个'Category'列表时,我希望它成为类的一部分,所以我可以在foreach循环中使用它。

希望这有道理吗?

2 个答案:

答案 0 :(得分:20)

你应该使用partial类:

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

这种方式this.CategoryName将按预期工作。

这是有效的,因为实体框架代码生成器生成的类也生成partial类。这也意味着您可以安全地从数据库重新生成类,而不会影响您自己定义的部分类。

答案 1 :(得分:9)

您应该将[NotMapped]属性添加到属性