0

Я новичок в EF Code First.Как реализовать IDatabaseInitializer с SQL Server CE 4.0

Я создал подкласс 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()) 
    { 

    } 
} 

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

+0

Параметр '.sdf' файл для SQL Server CE 4.0 только с когда вы на самом деле ** сохранили ** что-то в нем .... –

+0

База данных создается и инициализируется при выполнении операции с контекстом, доступа к DbSet или вставки/обновления. Вы пробовали что-нибудь из этого? – archil

+0

Я сделал в DatabaseInitializer.Seed, но он никогда не вызывался – Shimmy

ответ

3

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

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

Пример:

context.Database.Initialize(false);