Asp.net mvc 代码迁移正在跳过初始代码迁移

Asp.net mvc 代码迁移正在跳过初始代码迁移,asp.net-mvc,entity-framework,entity-framework-migrations,Asp.net Mvc,Entity Framework,Entity Framework Migrations,使用EntityFramework5,我们在应用程序中使用代码优先迁移。每个开发人员都有自己的数据库 我不小心把我的空了:里面什么都没有,没有表,甚至迁移历史表也没有 因此,我尝试通过PM控制台执行updatedatabase再次更新数据库。它立即给我一个错误,表不存在,而它应该在我的初始代码迁移中创建 有趣的是,PM控制台还显示了正在应用的迁移,它不包含初始创建代码迁移,因此根本不创建任何表,当然在以后的迁移中失败 我尝试执行了updatedatabase-targetmigration:in

使用EntityFramework5,我们在应用程序中使用代码优先迁移。每个开发人员都有自己的数据库

我不小心把我的空了:里面什么都没有,没有表,甚至迁移历史表也没有

因此,我尝试通过PM控制台执行
updatedatabase
再次更新数据库。它立即给我一个错误,表不存在,而它应该在我的初始代码迁移中创建

有趣的是,PM控制台还显示了正在应用的迁移,它不包含初始创建代码迁移,因此根本不创建任何表,当然在以后的迁移中失败

我尝试执行了
updatedatabase-targetmigration:initialcreate
,它告诉我代码迁移不存在,而它是从cs文件直接复制/粘贴的,因此id必须正确(注意:这适用于其他迁移)

我还尝试了
updatedatabase-targetmigration:0
updatedatabase-targetmigration:$InitialDatabase
,这两种方法都给了我
“目标数据库已经是版本0了”

我也尝试过完全删除数据库,让EF为其创建,但也不起作用,它一直跳过initialcreate迁移


那么,如何获得代码迁移以执行initalCreate代码迁移呢?

在团队场景中使用EF迁移至少是不理想的。我的团队遵循的最佳实践是从不提交迁移。迁移是个人的,只适用于特定的数据库实例。如果每个人都进行了自己的迁移,那么你会很快陷入混乱

虽然与您的问题没有直接关系,但有些人可能想知道您如何处理生产迁移。简单地说,你没有。您的发行版经理,或者实际推动发行版的人,应该生成SQL以一次应用所有更改,然后将其交给您的DBA或管理生产数据库的人


也就是说,在您描述的场景中,您的数据库已被清空。最好的修复方法是删除迁移文件夹中的所有迁移。甚至,尤其是初始迁移(无论如何,它们并不重要,因为您不应该在个人代码库之外保留它们)。然后生成一个新的迁移,这将触发EF将您当前的数据库状态(空)与应用程序的状态进行比较,并根据应用程序的当前状态创建一个新的初始迁移。然后,您可以应用此迁移。

这种方法似乎是合乎逻辑且故障安全的,我从来没有这样想过。的确,团队场景中的代码迁移并不总是很好。我们将考虑在我们的下一个项目中使用这种方法。另外,您为空数据库提供的解决方案也非常有效。谢谢!!:)