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

lee*_*n3o 20 c# linq asp.net entity-framework

我是第一次使用实体框架,并想知道以下是否可行 - 我已经从数据库中生成了我的类,并且有一个名为Category的类.

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

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

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

public string CategoryURL 
{
    get{ return MyCustomMethod(this.CategoryName) }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这有道理吗?

Kla*_*sen 21

你应该使用一个partial类:

public partial class Category
{
    public string CategoryURL  
    { 
        get{ return MyCustomMethod(this.CategoryName); } 
    } 
}
Run Code Online (Sandbox Code Playgroud)

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

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


Jar*_*ach 11

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