【问题标题】:Force Entity Framework Code First to Recreate Db that is deleted while application is running强制实体框架代码首先重新创建在应用程序运行时删除的 Db
【发布时间】:2016-10-15 02:51:36
【问题描述】:

我目前正在开发一个使用 MySQL 后端数据库进行查询的 Web Api 项目。使用 EF v6.1.3 执行 db 访问。

我想要实现的是,如果在应用程序运行期间删除了我的后端数据库,那么当下一个数据库查询请求进入时,数据库将重新创建到最新的迁移并插入任何种子数据。

当我在应用程序运行时删除数据库时,下一个请求会出现打开数据库连接错误。

注意:正在 Toad 或 MySQL Workbench 中删除数据库。

如果我随后回收应用程序池,然后重试请求,则会自动创建后端数据库。

非常感谢您在这方面的任何帮助。

问候,

斯图尔特

【问题讨论】:

    标签: mysql database entity-framework ef-code-first entity-framework-6


    【解决方案1】:

    在删除/删除数据库之前,您必须关闭所有连接:

    使用以下命令,然后将其删除:

    DbContext.Database.ExecuteSqlCommand(@"  
        $result = mysql_query('SHOW FULL PROCESSLIST');  
          while ($row = mysql_fetch_array($result))  
           { 
             $process_id =$row['Id']; 
             if ($row['Time'] > 200 )  
             { 
              $sql = 'KILL $process_id'; 
              mysql_query($sql); 
             } 
          }")
    

    【讨论】:

    • 不确定这是否对您上面的答案有影响,但我没有从 c# 中删除数据库,我已经用这些信息更新了上面的问题
    • 你删除数据了吗?你必须关闭连接?
    • 不,我删除了整个数据库,我认为这种情况下的问题是 EF 上下文仍然认为数据库存在。
    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多