在我的主项目中,我已经为我的数据库配置了一个连接字符串,如下所示:
<add name="DefaultStoreConnection" "provider....">
在我的基础架构项目中,我有一个带有默认构造函数的数据库上下文,它将连接名称传递给基类:
public DatabaseContext() : base("DefaultStoreConnection") {}
我的应用程序启动后,EF会在应用程序输出文件夹(\ bin)中生成'store.sdf'(SQLCe数据库)。
现在,我想重置所有迁移并从普通数据库开始。我删除了\ bin目录中的'store.sdf',删除了所有迁移文件,然后在包管理器控制台中调用:
Enable-Migrations -Force -ProjectName "MyInfrastructureProject" -StartUpProjectName "MyMainProject".
这很好用,生成了一个新的迁移配置类。然后我跑了:
Add-Migration Initial -ProjectName....
然后出现以下行:
A previous migration called 'Initial' was already applied to the target database
在哪儿?此迁移已应用于何处?我在哪里可以重置这个“迁移”?
答案 0 :(得分:0)
它应该位于包含所有迁移的文件夹中,但在将其应用于数据库后可能会被删除。您可以在目标数据库的__MigrationHistory
表中查看已应用的迁移列表。如果您希望重新填充数据库,请清空__MigrationHistory
表。
答案 1 :(得分:0)
我遇到了和你一样的问题。经过一天的谷歌搜索没有一个有用的帮助,我自己发现这是Visual Studio的错误,你的解决方案有多个Mvc项目。添加迁移将检查旧的Mvc项目以创建当前项目的迁移文件(这就是我称之为BUG的原因)。
为避免这种情况,您应该只为每个解决方案使用一个Mvc项目。
答案 2 :(得分:-1)
查看项目的app_data
文件夹。