在ASP.MVC中扩展模型类(继承?)

时间:2010-06-29 11:05:58

标签: entity-framework

我想创建像wrapper或mayby这样的东西,更好的单词将是在EntityFramework模型类中生成的“Extension”......

我有模型USER,有密码,用户名等...而且用户与其他一些对象有多对多关系......无论如何......

我想创建这样的东西:

class ExtendedUser : USER {
 public void AddObject(Object o) {}
}

但我不知道,这是个好主意...... 我不知道如何创建构造函数。我想做这样的事情。

User u = ...;
ExtendedUser eu = u as ExtendedUser;

概念我想从数据库中获取数据并将其放入ExtendedUser实例中,因为此对象将具有操作此数据的方法...

怎么做?

2 个答案:

答案 0 :(得分:7)

我相信实体框架生成的类是部分类,所以你可以在同一个命名空间中创建另一个具有相同名称的部分类,你应该看到你在用户类上添加的任何额外方法,例如:

partial class User
{
  //Generated code
}

partial class User
{
   public void MyMethod();
}

User u = new User();
u.MyMethod();

答案 1 :(得分:0)

如果你只是想扩展方法,那就足够了。但是,如果您还想向模型添加元数据(如数据注释等),则此方法不起作用。

实际上,您只能将方法添加到自动生成的类中。

我回答了有关向自动生成的实体类here添加和保留数据注释的问题。