Как реализовать IDatabaseInitializer с SQL Server CE 4.0 - PullRequest
0 голосов
/ 18 января 2012

Я новичок в EF Code First.

Я создал подкласс DbContext и добавил немного DbSets.

Я сделал подкласс DropCreateDatabaseAlways<MyContext> и реализовал следующее в контексте, вот как выглядит мой контекст:

public class Context : DbContext
{
  public Context() : base("Database") {  }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    Database.DefaultConnectionFactory.CreateConnection("System.Data.SqlServerCe.4.0");
    Database.SetInitializer(new DatabaseInitializer());
  }

  public DbSet<NameEntity> Names { get; set; }
  public DbSet<Case> Cases { get; set; }
}

После того, как я запустил следующее и проверил файлы приложений, я не вижу созданную базу данных:

public App() //App ctor
{
  using (Models.Context context = new Models.Context())
  {

  }
}

Чего мне не хватает?

1 Ответ

3 голосов
/ 18 января 2012

Вы должны как-то заставить EF создать базу данных.Это можно сделать следующим образом:

  • Использование контекста (либо сохранение чего-либо, либо чтение чего-либо) - в этом случае операция Seed не считается, поскольку Seed выполняется после инициализации базы данных, но вам нужночто-то для инициализации
  • Ручная принудительная инициализация

Пример:

context.Database.Initialize(false);
...