Вы можете сделать следующее:
_dbContext.ChangeTracker.Entries().Where(e => e.Entity != null).ToList()
.ForEach(e => e.State = EntityState.Detached);
Решенный вопрос состоит в том, чтобы сделать дублирующуюся таблицу.
> CREATE TABLE alums_alumphoto_new LIKE alums_alumphoto;
> ALTER TABLE .... // Drop constraint
> ALTER TABLE .... // Drop KEY
> ALTER TABLE .... // Drop the column
> INSERT INTO alums_alumphoto_new (SELECT id, alum_id, photo_id, media_id, updated FROM alums_alumphoto);
> RENAME TABLE alums_alumphoto TO alums_alumphoto_old, alums_alumphoto_new TO alums_alumphoto;
Если существует ошибка при выполнении, ПЕРЕИМЕНОВЫВАЮТ ТАБЛИЦУ, некоторые другие таблицы могли бы иметь ограничения внешнего ключа, ссылающиеся на эту таблицу, в этом случае этот целый подход глуп.:)
Попытайтесь комбинировать операторы DROP KEY и DROP FOREIGN KEY.
ALTER TABLE `alums_alumphoto`
DROP KEY KEY `alums_alumphoto_photo_id`,
DROP FOREIGN KEY `photo_id_refs_id_63282119`;
ALTER TABLE `alums_alumphoto`
DROP COLUMN `photo_id`;
Точно, попробуйте это:
Сначала отбросьте Внешний ключ или Ограничение:
ALTER TABLE `alums_alumphoto` DROP FOREIGN KEY `photo_id_refs_id_63282119`;
Предыдущая команда удаляет Ограничение Внешнего ключа на столбец. Теперь можно отбросить столбец photo_id
(индекс удален MySQL при отбрасывании столбца):
ALTER TABLE `alums_alumphoto` DROP COLUMN `photo_id`;
Aternatively, Вы могли объединить эти 2 операции в одну:
ALTER TABLE `alums_alumphoto`
DROP FOREIGN KEY `photo_id_refs_id_63282119` ,
DROP COLUMN `photo_id`;