【问题标题】:File not found error when manually deleting a SQL Server Compact 4.0 file while using Entity Framework 4.3 Migrations使用 Entity Framework 4.3 迁移时手动删除 SQL Server Compact 4.0 文件时找不到文件错误
【发布时间】:2012-07-09 00:07:36
【问题描述】:

我正在测试我们的应用程序以使用 SQL Server Compact 4.0 数据库。应用程序使用数据库(如果存在)或使用实体框架 4.3 迁移构建它(如果不存在)。

但是,当我在程序空闲时删除文件然后执行将导致数据库读取的操作时,我会收到 File not found 错误。这几乎不是真实世界的场景,但我确实想了解发生了什么。

似乎在后台某个地方,框架正在跟踪这样一个事实,即已经检查过是否需要创建数据库。如果确实如此,我不确定我是否喜欢这样。

那么,为什么在第一次访问时创建了数据库,但在程序运行时没有重新创建? (我知道这样做有很多很好的理由,但我想知道实现的位置)。

【问题讨论】:

    标签: sql-server-ce entity-framework-4.3 sql-server-ce-4


    【解决方案1】:

    因为数据库创建是 EF 初始化的一部分 - 当第一次使用上下文检索或持久化数据时,每个上下文类型的初始化通常只发生一次。在您的应用程序运行时删除数据库不是 EF 用例,因此如果您想支持这种情况,您必须自己处理。您可以尝试使用 dbContext.Database.Initialize(true); 重新初始化 EF,不要在没有真正需要的情况下运行此操作,因为初始化是非常昂贵的操作,并且您的应用程序中没有线程。可以在初始化运行时访问数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 2010-11-01
      相关资源
      最近更新 更多