EF Migrations: усеченный стол - PullRequest
2 голосов
/ 19 июня 2019

Я работаю над существующим проектом, который использует Entity-Framework с code-first.Мне нужно запустить SQL до запуска миграции, но я получаю сообщение об ошибке ограничения внешнего ключа, поэтому мне нужно удалить существующие данные из таблиц.Могу ли я сделать это, не удаляя таблицы с помощью DbMigration.DropTable ()?

Ответы [ 3 ]

0 голосов
/ 19 июня 2019

Я думаю, что нашел это:

Sql("Truncate table dbo.MyTable"); 

Спасибо за вашу помощь.

0 голосов
/ 19 июня 2019

В некоторых случаях в производственной среде у вас нет скриптов заполнения, и вам нужно содержимое вашей таблицы. В этом случае вы можете использовать функции DbMigration.DropForeignKey и DbMigration.AddForeignKey или создать таблицу MyTableCopy, запустить SQL и вставить содержимое MyTable в новую таблицу. После этого в новой миграции вы можете удалить исходную таблицу и переименовать новую.

0 голосов
/ 19 июня 2019

Вы не можете обрезать таблицы, на которые ссылается ограничение внешнего ключа.

Ваш единственный вариант - обрезать данные вручную, используя DELETE FROM, начиная с таблицы, на которую не ссылается никакая другая таблица.Эквивалент EF будет что-то вроде

db.TableToTruncate.RemoveRange(db.TableToTruncate);
...