Расширить класс модели в ASP.MVC (наследование?) - PullRequest
1 голос
/ 29 июня 2010

Я хотел бы создать что-то вроде оболочки или, может быть, лучшим словом было бы «Расширение» для сгенерированного в классе модели EntityFramework ...

У меня есть модель USER, с паролем, именем пользователя и т. Д.и пользователь имеет отношение многие ко многим с некоторыми другими объектами ... что угодно ...

Я хотел бы создать что-то вроде этого:

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

Но я надеваюНе знаю, это хорошая идея ... Я не знаю, как создать конструктор.Я хотел бы сделать что-то вроде этого.

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

Концептуально я хотел бы получить данные из БД и поместить их в экземпляр ExtendedUser, потому что у этого объекта будут методы для манипулирования этими данными ...

Как это сделать?

Ответы [ 2 ]

7 голосов
/ 29 июня 2010

Я считаю, что классы, сгенерированные структурой сущностей, являются частичными классами, поэтому вы можете создать другой частичный класс с тем же именем в том же пространстве имен, и вы должны увидеть любые дополнительные методы, которые вы добавляете в пользовательский класс, например:

partial class User
{
  //Generated code
}

partial class User
{
   public void MyMethod();
}

User u = new User();
u.MyMethod();
0 голосов
/ 24 июля 2013

Если вы просто хотите расширить методы, этого достаточно.Однако, если вы также хотите добавить метаданные в вашу модель (например, аннотации данных и т. Д.), Этот подход не работает.

Фактически, вы можете добавлять только методы к автоматически сгенерированному классу.

Я ответил на вопрос о добавлении и сохранении аннотаций данных к автоматически сгенерированным классам сущностей, здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...