О Code First Database Evolution (aka Migrations)

Я смотрел скринкаст из MSDN BLOG, в котором говорится о миграции базы данных.

Есть ли кто-нибудь, кто знает, когда мы можем использовать эту функцию? Похоже, он еще не работает в CTP5.

Кстати, есть ли способ засеять исходные данные после того, как я изменил код схемы?

Это то, что я делаю прямо сейчас, оно вытирает все данные каждый раз, когда я менял модель.

DbDatabase.SetInitializer<Context>(
    new DropCreateDatabaseIfModelChanges<Context>());

Ответы

Ответ 1

Скорее всего, эта функция миграции доступна в версии RTM, нацеленной на первый квартал 2011 года.

Чтобы заполнить базу данных некоторыми исходными данными, вы можете создать свой собственный инициализатор базы данных и наследовать ее по своей желаемой стратегии (прямо сейчас у нас есть 2 варианта), а затем переопределить метод Seed внутри нее:

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
    protected override void Seed(InheritanceMappingContext context)
    {        
        MyEntity entity = new MyEntity()
        {
            ...
        };
        context.MyEntities.Add(entity);
        context.SaveChanges();
    }
}

Ответ 3

EF 4.1. Кандидатская версия выпущена в марте и выглядит как эта функция миграции еще не включена.