Рефакторинг базы данных с помощью EntityFramework из кода - PullRequest
4 голосов
/ 16 июня 2011

Я в процессе адаптации корзины покупок MVCMusicStore.Я хочу реорганизовать базу данных с помощью EntityFramework, а не через обозреватель сервера.

В папке с моими моделями я создал новую модель FooEntities.

public class FooStoreEntities : DbContext
{
    public DbSet<Foo> Foos { get; set; }
    public DbSet<Category> Categories { get; set; }
    public DbSet<FooMaker> FooMakers { get; set; }
    public DbSet<Cart> Carts { get; set; }
    public DbSet<Order> Orders { get; set; }
    public DbSet<OrderDetail> OrderDetails { get; set; }
}

Я также создал дополнительнуюмодели Foo, FooMaker и Category.Другие модели уже существовали в примере MVCMusicStore.

Я создал класс SampleFooData, который наследуется от DropCreateDatabaseIfModelChanges<FooStoreEntities> и переопределяет метод seed для заполнения новых таблиц.

Я изменилметод Application_Start в Global.asax.cs, содержащий System.Data.Entity.Database.SetInitializer(new FooStore.Models.SampleFooData());

В файле web.config, который у меня есть:

<connectionStrings>
    <add name="FooStoreEntities"
    connectionString="Data Source=|DataDirectory|FooStore.sdf"
    providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

Где FooStore.sdf по-прежнему содержит все старые таблицы изприложение MVCMusicStore.

Когда я запускаю веб-приложение, оно достигает точки останова SetInitializer, однако, похоже, что оно не создает объект SampleFooData и не создает новые таблицы в базе данных.Что мне не хватает?Или есть что-то фундаментальное, чего я не понимаю?

1 Ответ

2 голосов
/ 16 июня 2011

Он будет создан только при использовании контекста вашей БД: см. База данных Entity Framework. SetInitializer просто не работает

Вы могли бы поставить

var ctx = new FooStoreEntities();
ctx.Database.Initialize(true);

после того, как вы установили инициализатор в Application_Start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...