如何使用 SQL Server CE 4.0 实现 IDatabaseInitializer

发布于 2024-12-27 23:07:02 字数 801 浏览 5 评论 0原文

我是 EF Code First 的新手。

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

我创建了 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; }
}

在运行以下命令并检查应用程序文件后,我没有看到生成的数据库:

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

  }
}

我缺少什么?

I'm new to EF Code First.

I created a subclass of DbContext and added some DbSets.

I made subclass of DropCreateDatabaseAlways<MyContext> and implemented the following in the context, here is what my context looks like:

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

After I run the following and check the apps files I don't see a generated database:

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

  }
}

What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雪化雨蝶 2025-01-03 23:07:02

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

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

示例:

context.Database.Initialize(false);

You must force EF somehow to create database. It can be done by:

  • Using context (either storing something or reading something) - Seed operation doesn't count in this case because Seed is executed after database is initialized but you need something to trigger initialization
  • Manually force initialization

Example:

context.Database.Initialize(false);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文