2016-04-27 5 views
0

Как вставить случайное значение, сгенерированное кодом C# во время миграции Entity Framework первого кода? Я добавил столбец серийных номеров с уникальным индексом. Серийные номера находятся в формате XXXYYYY-X, где X - число, а Y - алфавитный символ. Серийные номера не должны быть в последовательности, они просто должны быть случайными (в базе данных имеется небольшое количество записей, поэтому возможность генерации повторяющегося серийного номера мала).Вставить случайные значения во время миграции EF

Я попытался следующие:

AddColumn("dbo.Product", "SrNo", c => c.String(maxLength: 9, fixedLength: true, unicode: false, defaultValue: RandomSerialNo())); 

... но миграция создает только один серийный номер и пытается вставить его для всех записей.

+0

Вы нашли решение? Сейчас у меня очень похожая проблема. Я хочу добавить столбец электронной почты в таблицу пользователя и, очевидно, хочу, чтобы столбец был уникальным, но миграция завершилась неудачно из-за повторяющихся значений (либо множественных нулей, либо одной и той же случайной строки). – Christian

+1

Собственно, нет. Мне пришлось разделить миграцию на две части - первая часть меняет столбец. Затем я вручную запускаю скрипт, который гарантирует уникальность данных. И затем я добавляю уникальное ограничение во вторую миграцию. – Storm

ответ

-1

Вы должны поместить свой код, чтобы вставить данные в базу данных на SEED методе, который обычно находятся в configuration.cs

Метод семени после Выполнения выражений перенастройки базы данных с помощью команды Update-баз данных.

+1

Проблема заключается в том, что метод Seed запускается ПОСЛЕ перехода ... однако, во время миграции создается уникальный индекс. Это приводит к сбою миграции, поэтому метод Seed даже не выполняется. – Storm

Смежные вопросы