Entity framework 如何在SQL Server CE 4.0中实现IDatabaseInitializer

Entity framework 如何在SQL Server CE 4.0中实现IDatabaseInitializer,entity-framework,entity-framework-4.1,ef-code-first,sql-server-ce-4,Entity Framework,Entity Framework 4.1,Ef Code First,Sql Server Ce 4,我第一次接触EF代码 我创建了DbContext的子类,并添加了一些dbset 我创建了DropCreateDatabaseAlways的子类,并在上下文中实现了以下内容,我的上下文如下所示: public class Context : DbContext { public Context() : base("Database") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) {

我第一次接触EF代码

我创建了
DbContext
的子类,并添加了一些
dbset

我创建了DropCreateDatabaseAlways的子类,并在上下文中实现了以下内容,我的上下文如下所示:

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

我缺少什么?

您必须以某种方式强制EF创建数据库。可通过以下方式完成:

  • 在这种情况下,使用上下文(存储或读取内容)
    Seed
    操作不起作用,因为
    Seed
    是在数据库初始化之后执行的,但您需要一些东西来触发初始化
  • 手动强制初始化
例如:

context.Database.Initialize(false);

您必须以某种方式强制EF创建数据库。可通过以下方式完成:

  • 在这种情况下,使用上下文(存储或读取内容)
    Seed
    操作不起作用,因为
    Seed
    是在数据库初始化之后执行的,但您需要一些东西来触发初始化
  • 手动强制初始化
例如:

context.Database.Initialize(false);

SQL Server CE 4.0的
.sdf
文件只有在您实际存储了某些内容后才会显示……当您使用上下文、访问数据库集或进行一些插入/更新时,数据库才会被创建和初始化。您尝试过其中任何一种吗?我在DatabaseInitializer.Seed中尝试过,但它从未被调用SQL Server CE 4.0的
.sdf
文件仅在您实际存储了某些内容后才会显示…当您使用上下文、访问数据库集或进行一些插入/更新时,数据库会被创建和初始化。你试过这些吗?我在数据库初始化器中试过。种子,但从未调用过