0

私はEFコードを初めて使用しています。SQL Server CE 4.0でIDatabaseInitializerを実装する方法

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; } 
} 

私は次のことを実行して、私は生成されたデータベースが表示されていないアプリのファイルを確認した後:

私は何が欠けていますか?

+0

SQL ServerのCE 4.0のみのための '.sdf'ファイルあなたが実際** **その中に何かを保存したら、それはうまくいきます.... –

+0

コンテキストで操作したり、DbSetにアクセスしたり、いくつかの挿入/更新を行うと、データベースが作成され、初期化されます。これらのいずれかを試しましたか? – archil

+0

私はDatabaseInitializer.Seedで行いましたが、決して呼び出されません – Shimmy

答えて

3

EFを何らかの形で強制的に作成してデータベースを作成する必要があります。コンテキスト(何かを保存したり、何かを読んだのいずれか)を使用して

  • - データベースが初期化された後Seedが実行されるためSeed操作は、この場合にはカウントされませんが、あなたは初期
  • をトリガするために何かを必要とする:それはによって行うことができます手動で初期化を強制

例:

context.Database.Initialize(false); 
関連する問題