Лучший способ инкрементного заполнения данных в Entity Framework 4.3

Я использовал Entity Framework 4.3 в существующей базе данных, и у меня есть несколько сценариев, которые я пытаюсь удовлетворить.

Во-первых, если я удалю свою базу данных, я бы хотел, чтобы EF воссоздал ее с нуля - для этого я успешно использовал инициализатор базы данных CreateDatabaseIfNotExists.

Во-вторых, если я обновляю свою модель, а база данных уже существует, я хочу, чтобы база данных обновлялась автоматически - я успешно использовал для этого Entity Framework 4.3 Migrations.

Итак, вот мой вопрос. Скажем, я добавляю новую таблицу в свою модель, для которой требуются некоторые справочные данные, что является лучшим способом обеспечить создание этих данных как при запуске инициализатора базы данных, так и при выполнении миграции. Я хочу, чтобы данные создавались, когда я создаю базу данных с нуля, а также когда база данных обновляется в результате выполнения миграции.

В некоторых примерах миграции EF я видел, как люди использовали функцию SQL () в методе UP миграции для создания исходных данных, но, если возможно, я бы предпочел использовать контекст для создания исходных данных (как вы видите в большинстве баз данных Примеры инициализаторов), поскольку мне кажется странным, что вы будете использовать чистый sql, когда вся идея EF абстрагируется от этого. Я попытался использовать контекст в методе UP, но по какой-то причине он не подумал, что таблица, созданная при миграции, существует, когда я пытался добавить исходные данные непосредственно под вызовом для создания таблицы.

Любая мудрость приветствуется.

41
задан Ladislav Mrnka 18 February 2012 в 23:48
поделиться