Допустим, у меня есть 2 класса в модели: User (сопоставленный с таблицей USERS) и PrivilegedUser (наследующий User, дополнительная информация хранится в таблице PRIVILEGEDUSERS).
Теперь у меня есть строка в USERS (и экземпляр User), и мне нужно преобразовать этого пользователя в PrivilegedUser (то есть создать запись в PRIVILEGEDUSERS с тем же Id). Есть ли способ сделать это без удаления / вставки?
Проблема в том, что в модели отсутствует представление PRIVILEGEDUSERS, поэтому вы не можете создать только эту часть PrivilegedUser.
Это был просто пример. PrivilegedUser может иметь некоторую скидку или персонального менеджера или что-то еще в дополнение к обычным свойствам пользователя. В то же время существуют другие таблицы, которые должны ссылаться на пользователей независимо от конкретного типа пользователя. Я реализовал это, используя режим наследования таблиц для типов. На уровне базы данных очень просто конвертировать пользователей из одного типа в другой (вам просто нужно вставить или удалить запись из таблицы расширений). Но в EF у вас есть только UserSet, в котором хранятся объекты User и PrivilegedUser. Вот почему я спрашиваю: можно ли заменить существующий объект пользователя на PrivilegedUser, сохранив существующий идентификатор и не удаляя запись из таблицы USERS.