2015-08-25 46 views
1

我们遇到了一个问题,这个星期谁使用Management Studio中的实体框架数据库手动删除表我们的客户之一。当他们去运行我们的软件应用程序时,它会抛出一个异常,因为表不存在。该框架不会重新创建该表,因为它存在于MigrationHistory表中。如果我从迁移历史中删除相应的行,实体框架将重新创建表。重建表,如果是手动删除

我们想什么,能够做的就是抓住这个特别的异常,并具有为实体框架的方式来重新创建表,如果无需删除对应行中的迁移历史不存在。是否有一个特定的背景可以让我们做到这一点?在这种特殊情况下,数据丢失并不重要,因为表格是我们用于临时追踪的东西,因此如果它不存在,则重新创建它不会对现有数据造成风险。

非常感谢,

达明

回答

0

从我的经验是没有办法,你可以用的EntityFramework迁移实现这一目标。 EF迁移通常是非常简单的机制。它不会对数据库结构执行任何检查。其关于数据库结构的知识仅基于__MigrationHistory表,迁移可以作为一个整体应用或恢复,而不是部分。迁移系统表现良好,如果它是管理数据库结构只有一个,如果有一些其他的东西(如用户)将自己的strucutre则往往会导致需要手动解决冲突。如果你想有智能移民系统,那么恐怕你必须自己写。对于客户机的正确解决方案是撤消谁不小心与系统(我假设是这种情况)互动雏用户管理员权限。如果他们拒绝这样做,你必须修复,因为他们的行为的系统,那么这是给他们另一个发票的修为的绝佳机会(这不就是漂亮吗?)。

+0

我刚刚意识到了近1年后,我从来没有回复感谢您的答复。我们的软件系统最终没有太多问题,因此每天都会进行数据库备份,因此从其中的一个进行恢复很简单。我们决定不发票修理到底:)。 –