EF 5-код ​​Первой миграции массового SQL-данных

Я использую EF5 с MVC4. Проблема в том, что у меня есть большие данные в моей БД, которые я уже импортировал из старой базы данных. Я хочу загрузить данные семени при изменении модели. Мой вопрос в том, как я могу засеять большой объем данных, который уже находится в моей БД?

internal sealed class Configuration : MigrationsConfiguration<VoiceLab.Models.EFDataContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }

    protected override void Seed(VoiceLab.Models.EFDataContext context)
    {
     //what to do here to seed thousands or records that are already in db
    }

}

спасибо,

Ответ 1

Вот как вы можете загружать массивные данные, просто предоставляя файлы .sql в методе семян.

public class AppContextInitializer : CreateDatabaseIfNotExists<AppContext>
{
    protected override void Seed(AppContext context)
    {
        var sqlFiles = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.sql").OrderBy(x => x);
        foreach (string file in sqlFiles)
        {
            context.Database.ExecuteSqlCommand(File.ReadAllText(file));
        }

        base.Seed(context);
    }
}

Ответ 2

Перенос на основе кода - рекомендуемый подход для существующих баз данных (ручное обновление базы данных) после изменения модели. Вы можете сделать это с помощью PowerShell в окнах пакета Comand Line. Таким образом, существующие данные будут сохранены.

Если вы являетесь частью команды разработчиков, использующих средства управления версиями, вы должны либо использовать чисто автоматические миграции, либо просто переносить на основе кода. Учитывая ограничения автоматических миграций с использованием миграции на основе кода в командных средах, рекомендуется.

http://msdn.microsoft.com/en-us/data/jj591621

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

internal sealed class Configuration : MigrationsConfiguration<DataContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;

        // if model changes involve data lose
        AutomaticMigrationDataLossAllowed = true;

    }

    protected override void Seed(DataContext context)
    {
     //seed only when creating or new database
    }

}