Почему это не работает?Entity Framework Migrations пользовательский SQL не работает
AddColumn("dbo.Bins", "Code", c => c.String());
//custom copy data from old BinCode column
Sql("UPDATE Bins SET Code = BinCode WHERE BinCode IS NOT NULL");
DropColumn("dbo.Bins", "BinCode");
Бункеры имеет Bin.BinCode с множеством значений, когда я запускаю это внутри DbMigration
я считаю, что Bin.Code является NULL
.
EDIT: Я на самом деле не запустить Update-Database в консоли менеджера пакетов, но я выполняю от моего блока источника работы:
Database.SetInitializer<eVendContext>(new MigrateDatabaseToLatestVersion<eVendContext, Configuration>());
Edit 2: Просто для уточнения, База данных успешно обновляется до последней миграции. Простые данные не копируются из поля BinCode в поле Code при завершении.
Edit 3: Вот соответствующий выход из -verbose Update-базы данных:
ALTER TABLE [dbo].[Bins] ADD [Code] [nvarchar](max)
UPDATE Bins SET Bins.Code = BinCode WHERE BinCode IS NOT NULL
DECLARE @var0 nvarchar(128)
SELECT @var0 = name
FROM sys.default_constraints
WHERE parent_object_id = object_id(N'dbo.Bins')
AND col_name(parent_object_id, parent_column_id) = 'BinCode';
IF @var0 IS NOT NULL
EXECUTE('ALTER TABLE [dbo].[Bins] DROP CONSTRAINT [' + @var0 + ']')
ALTER TABLE [dbo].[Bins] DROP COLUMN [BinCode]
Когда я запускаю этот вывод многословен на моей базе данных в качестве полного сценария, я получаю ошибку «недопустимое имя столбца ' Код'". Но каждый оператор, в свою очередь, обновляет мою базу данных, как и следовало ожидать.
Означает ли это, что мне нужно выполнить этот стиль переноса данных по нескольким миграциям или есть способ сообщить, что миграция должна выполнять каждый шаг миграции отдельно?
Что такое ошибка? –
Отсутствие ошибки или исключения, данные не переносятся из старого столбца в новый столбец. – Smithy
Вы действительно выполнили команду «Обновить-База данных» в консоли диспетчера пакетов? –