О 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();
}
}
Ответ 2
Альфа-3 сейчас отсутствует.
http://blogs.msdn.com/b/adonet/archive/2011/09/21/code-first-migrations-alpha-3-no-magic-walkthrough.aspx
Ответ 3
EF 4.1. Кандидатская версия выпущена в марте и выглядит как эта функция миграции еще не включена.