2010-09-29 2 views
5

Я вижу, что подобный вопрос, заданный здесь, но я не думаю, что это было очень ясно, так что я создаю еще один: Entity Framework: Inheritance, change object typeИзменение наследуемых типов в Entity Framework

У меня есть Entity Student, который наследует от Entity Человек.

В какой-то момент человек может стать Студентом.

Есть ли способ в Entity Framework 4 справиться с этим без хранимой процедуры или создания нового объекта.

+1

Это сломанная объектная модель. В ООП экземпляры не могут изменять тип. EF не добавляет эту функцию в C# /. NET. Для этого вы должны использовать композицию, а не наследование. –

+0

У меня сложилось впечатление, что дело не в том, является ли Студент Лицом, или у Ученика есть Человек. Возможно, вы могли бы указать мне ссылку, где это определено? – 2010-09-30 14:23:43

+0

Объект может иметь только один тип. Таким образом, вы не можете создать тип «RedDog» и также иметь тип «BigDog», потому что «Собака» может быть как большой, так и красной (Clifford). Я писал об этой проблеме здесь: http://blogs.teamb.com/craigstuntz/2008/07/17/37825/ –

ответ

6

№ Наследование EF не поддерживает этот сценарий. Лучший способ создать Студент для существующего Лицо должно использовать хранимую процедуру .
Обратите внимание, что это не хранимая процедура, подключенная к объекту Student через сопоставления, но отдельная, которая может быть вызвана явно из кода. В идеале было бы ИП, который принимает PersonId в качестве параметра, вставляет новую строку в таблицустудента, используя которые PersonId, а затем возвращает полный студент так, что он может быть использован immidiately.

+0

Просто сожгли это. Проходит час, я никогда не вернусь! – Paul

Смежные вопросы