我在VS 2012中使用EF Code First和EF 5.我使用PM update-database
命令,我有一个简单的种子方法来填充一些带有样本数据的表。
我想删除并重新创建我的x.mdb。更新历史记录似乎不同步。如果我在我的上下文中注释掉了我的所有DBS,update-database
运行时没有错误,但在数据库中留下了一些表。由于我在数据库中没有有价值的数据,因此最简单的方法是重置所有内容。
我该如何做到这一点?
答案 0 :(得分:87)
如果我理解正确的话......
如果你想要start clean
:
1)手动删除您的数据库 - 无论它在哪里(我假设您已对连接进行排序),或清空它,但更容易/更安全的是将它们全部删除 - 因为有system __MigrationHistory
表 - 你也需要删除它。
2)删除所有migration files
- 位于Migrations
下 - 并命名为数字等 - 全部删除,
3)重建您的项目,包含迁移(以及其他) - 并确保您的项目已设置(配置)以自动构建(有时可能会导致问题 - 但对您来说不太可能) ,
4)再次运行Add-Migration Initial
- 然后Update-Database
答案 1 :(得分:49)
如果您使用命令Add-Migration "Name_Of_Migration"
以正确的方式创建迁移,那么您可以执行以下操作以获得干净启动(重置,丢失数据,当然):
Update-database -TargetMigration:0
正常情况下,由于执行了down方法,因此您的数据库为空。
Update-database
这会将您的数据库重新创建为当前的迁移
答案 2 :(得分:25)
从Package Manager控制台删除,创建和播种的单个Liner:
update-database -TargetMigration:0 | update-database -force
KABOOM。
答案 3 :(得分:11)
对于EntityFrameworkCore,您可以使用以下内容:
Update-Database -Migration 0
这将删除数据库中的所有迁移。 然后你可以使用:
Remove-Migration
删除迁移。 最后,您可以重新创建迁移并将其应用于数据库。
Add-Migration Initialize
Update-Database
在EFCore v2.1.0上测试
答案 4 :(得分:3)
怎么样..
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());
// C
// o
// d
// i
// n
// g
}
我从Programming Entity Framework: Code First,Pg 28 First Edition中选择了这个。
答案 5 :(得分:1)
如果您按照本教程创建了数据库:https://msdn.microsoft.com/en-au/data/jj193542.aspx
......那么这可能有效:
.mdf
和.ldf
文件答案 6 :(得分:0)
采取以下步骤:
Dbset<Item> Items{get;set;}
并在Nuget控制台中运行这些命令它将删除Context中不存在但已在数据库中创建的表
答案 7 :(得分:0)
dbctx.Database.EnsureDeleted(); dbctx.Database.EnsureCreated();
答案 8 :(得分:0)
让我帮助您更新此处的答案,因为新用户会发现它很有用。 我相信其目的是删除数据库本身,并使用EF Code First方法重新创建它。 1.使用“ .sln”扩展名在Visual Studio中打开项目。 2.选择服务器资源管理器(通常在左侧) 3.选择“ SQL Server对象资源管理器”。 4.您要删除的数据库将列在任何localDB下。右键单击它,然后选择删除。
答案 9 :(得分:0)
删除数据库或更新现有数据库的方法有很多,只需切换到以前的迁移即可。
dotnet ef database update previousMigraionName
但是某些数据库具有局限性,例如不允许在创建关系后进行修改,这意味着您不允许特权从ef核心数据库提供程序删除列,但大多数时候允许在ef核心删除数据库中使用。因此,您可以使用drop删除数据库命令 然后您再次使用以前的迁移。
dotnet ef database drop
PMC command
PM> drop-database
或者您可以手动删除数据库并进行迁移。
答案 10 :(得分:0)
在 ASP.Net Core 5 中使用 EF6 我发现在第一次初始化数据库时这些命令很方便:
Remove-Migration -force; Add-Migration InitialMigration; Update-Database;
它删除最后一次迁移(应该是唯一的),再次创建它,然后刷新数据库。因此,您可以在编辑 Package Management Console
后将这三个命令在一行中键入 DbContext
,它会更新 InitialMigration
和数据库。
有点烦人的是,它会连续编译您的项目 3 次,但至少不需要进一步的手动步骤(例如删除迁移文件)。
当您删除实体时,您需要在更新前发出 Remove-Database
。所以这行变成了:
Remove-Migration -force; Add-Migration InitialMigration; Remove-Database; Update-Database;
此处有问题:您需要确认删除数据库 + 4 次重建。
答案 11 :(得分:-2)
由于有一天新的EF Core用户将点击这个问题,而我发现最重要的答案在某种程度上不必要地具有破坏性,因此,我将向您展示一种“新鲜”的方法。当心,这将删除您的所有数据。
dotnet ef database update