0

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

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

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

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

4

1 回答 1

1

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

于 2012-07-09T08:33:52.573 回答