Я бы не стал делать это с EF, потому что с наследованием вы создали объектно-ориентированную абстракцию над табличными отношениями, которая не позволяет вам конвертировать из разных типов. В ОО вы не можете делать такие вещи:
Child child = new Child();
Adult grownUp = child;
А потом ожидайте, что ребенок станет взрослым. Вы бы сделали это так:
Child child = new Child();
Adult grownUp = child.GrowUp();
Итак, если вы используете SQL Server, вы можете сделать это с помощью хранимой процедуры. Что-то вроде GrowUp (child) и создайте новую запись в таблице Adult, а также удалите запись в таблице Child, но оставьте Person без изменений. Вы можете вернуть новый взрослый объект из процедуры. Это может быть использовано следующим образом:
Adult grownUp = context.GrowUp(child);
Однако вам необходимо убедиться, что после этой строки вы больше не используете дочерний объект и вам, вероятно, нужно обновить или удалить его из контекста (не совсем уверен в этом).