我在VS 2012中将EF Code First和EF 5一起使用。我使用PMupdate-database
命令,并且我有一个简单的种子方法来用示例数据填充某些表。
我想删除并重新创建我的x.mdb。更新历史记录似乎不同步。如果我在上下文中注释掉所有的DBSet,则update-database
运行不会出现错误,但会将某些表保留在DB中。由于数据库中没有有价值的数据,因此重置所有内容似乎是最简单的。
我该怎么做?
Answers:
如果我理解正确的话...
如果您想start clean
:
1)手动删除您的数据库-无论它在哪里(我假设您的连接已排序),或将其清空,但是更容易/更安全的是一起删除所有数据库-因为有system __MigrationHistory
表-您也需要删除它。
2)删除所有migration files
-位于Migrations
-下方,并命名为数字等。-删除所有,
3)重建包含迁移(及其余)的项目-并确保将您的项目设置(配置)为自动生成(有时可能会引起问题-但对您而言不太可能),
4)Add-Migration Initial
再次运行-然后Update-Database
如果使用命令以正确的方式创建迁移,Add-Migration "Name_Of_Migration"
则可以执行以下操作以重新启动(当然,重置,但数据丢失):
Update-database -TargetMigration:0
自从执行down方法以来,通常您的数据库现在为空。
Update-database
这将重新创建数据库到您当前的迁移
从Package Manager控制台拖放,创建和播种的单一衬里:
update-database -TargetMigration:0 | update-database -force
Kaboom。
Update-Database 0
。无论如何,这并不适合OP的“更新历史记录似乎不同步”的情况;此方法通过对到目前为止已应用于数据库的每个迁移运行“向下”迁移来起作用,因此,如果您删除了先前已应用的迁移,则此操作将失败(并且如果在之后修改了迁移,则同样可能失败应用)。该接受的答案是更加健壮。-1,以及无法解释的重复update-database -force
。
对于EntityFrameworkCore,可以使用以下命令:
Update-Database -Migration 0
这将从数据库中删除所有迁移。然后,您可以使用:
Remove-Migration
删除迁移。最后,您可以重新创建迁移并将其应用于数据库。
Add-Migration Initialize
Update-Database
在EFCore v2.1.0上测试
怎么样 ..
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());
// C
// o
// d
// i
// n
// g
}
我是从《编程实体框架:代码优先》,第28页的第一版中挑选的。
如果您按照本教程创建数据库:https : //msdn.microsoft.com/zh-cn/data/jj193542.aspx
...那么这可能起作用:
.mdf
与.ldf
文件在项目目录让我来帮助更新此处的答案,因为新用户会发现它很有用。我相信其目的是删除数据库本身,并使用EF Code First方法重新创建它。1.使用“ .sln”扩展名在Visual Studio中打开项目。2.选择“服务器资源管理器”(通常在左侧)。3.选择“ SQL Server对象资源管理器”。4.您要删除的数据库将列在任何localDB下。右键单击它,然后选择删除。
update-database
,并且他提到了种子,所以OP似乎正在寻找在命令行上运行的命令,因此我认为他们正在寻找用于测试的自动化解决方案。因此,您的UI解决方案可能不是他们想要的。