Код EF4 Сначала создайте новую таблицу - PullRequest
1 голос
/ 13 августа 2011

Есть ли способ, когда я добавляю новую сущность в конфигурацию Code First, таблица добавляется автоматически, поэтому мне не нужно беспокоиться об обновлении моей БД новыми таблицами?

Ответы [ 2 ]

2 голосов
/ 13 августа 2011

Вы можете добавить

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<YourDbContext>());

при запуске приложения.Он восстановит базу данных для вас, если вы изменили свою конфигурацию.А если вы не хотите удалять и создавать базу данных (для пошаговой разработки), вы можете использовать SqlMigrations.http://www.hanselman.com/blog/EntityFrameworkCodeFirstMigrationsAlphaNuGetPackageOfTheWeek10.aspx

0 голосов
/ 13 августа 2011

С: http://blogs.msdn.com/b/adonet/archive/2010/12/06/ef-feature-ctp5-code-first-walkthrough.aspx

Установка стратегии инициализации

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

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

Добавьте оператор использования для System.Data.Entity.Database в верхней части Program.cs

using System.Data.Entity.Database;

Для пошагового руководства мы просто хотим удалить и заново создать базу данных при каждом изменении модели, поэтому в верхней части метода Main в моем классе Program я добавил следующий код

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