有时候,我会删除我的开发数据库并运行我的EF代码优先应用程序.我会得到错误:
无法打开登录请求的数据库"AssessmentSystem".登录失败.用户'AssessmentAdmin'登录失败.
我认为这是因为DbContext只有第一次使用上下文时才会运行数据库初始化逻辑"每个AppDomain一次",如本页所述.这意味着我需要回收IIS应用程序池,以便在我删除它时让EF重新创建我的数据库.
有没有什么办法可以让我每次尝试访问数据库时都能运行数据库初始化代码?因此,它将始终检查数据库是否存在,如果不存在,则创建它而不是尝试打开它,即使它使用的是先前访问过我现在已删除的数据库的相同AppDomain?
请注意,我希望对每个查询进行初始化检查,因此即使完成它Application_Start也不够经常; 理想情况下,我希望能够加载一些数据库数据,删除数据库,然后加载一些数据库数据,它将重新创建数据库,而我甚至不必重新启动应用程序(基本上我只需要重新加载网页,加载一些DB数据).