Производные от классов, сгенерированных Entity Framework в C # - PullRequest
5 голосов
/ 26 марта 2012

Я создал модель данных сущности и создал из нее базу данных.

Одна из сущностей называется Template.

Созданные частичные классы для расширения функциональности Template отлично работают.

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

Mapping and metadata information could not be found for EntityType 'Template001'.

Как я могу обойти это? Мне определенно нужно наследовать от классов EF.

EDIT

Не представляется возможным. Если это так, то как лучше всего реализовать следующее требование: Объект шаблона хранит информацию о шаблонах, каждый из которых имеет свой собственный код для выполнения. Вот почему я пытался получить от сущности в первую очередь.

Ответы [ 2 ]

5 голосов
/ 27 марта 2012

Не поддерживается. Вы не можете получить новый тип из сущности и использовать его вместо сопоставленного типа сущности для сохранения. Если вы хотите получить производный класс от сущности, вы должны использовать сопоставленное наследование, где каждый дочерний элемент также сопоставляется с базой данных.

4 голосов
/ 27 марта 2012

Зачем вам в первую очередь наследовать от класса сущности? Если вы хотите добавить простое поведение, используйте частичный класс.

Обновление: Судя по комментариям, существует вероятность того, что со временем поведение будет расширено. В этом случае я бы рекомендовал использовать композицию / агрегацию, а не наследование. Пусть классы, которые должны быть расширены, имеют сущность как поле. В сценарии Рахила это был бы класс с именем TemplateLogic с полем / свойством типа Template.

...