如何从头开始删除和重新创build一个现有的EF代码第一个数据库
我在VS 2012中使用EF Code First和EF 5。我使用PM update-database命令,我有一个简单的种子方法来填充一些带有示例数据的表。
我想删除并重新创build我的x.mdb。 更新历史logging似乎不同步。 如果我在我的上下文中注释掉所有的DBSets,update-database运行时没有错误,但在数据库中留下了一些表。 因为我在DB中没有有价值的数据,所以似乎最简单的就是重置所有的东西。
我怎样才能做到这一点?
如果我理解的话
如果你想start clean
:
1) 手动删除你的Db – 无论它在哪里(我假设你有你的连接sorting),或清空它,但更容易/更安全的是一起删除它 – 因为有system __MigrationHistory
表 – 你也需要删除。
2) 删除所有migration files
– migration files
下 – 并像数字等命名 – 删除所有,
3) 重build你的项目包含迁移(和其他) – 并确保你的项目设置(configuration)自动生成(有时可能会导致问题 – 但不太可能),
4)再次运行Add-Migration Initial
– 然后Update-Database
如果您使用命令Add-Migration "Name_Of_Migration"
创build了正确的迁移方法,那么您可以执行以下操作来获得一个干净的启动 (重置, 当然还有数据丢失 ):
-
Update-database -TargetMigration:0
通常你的数据库是空的,因为down方法被执行。
-
Update-database
这将重新创build您的数据库到您目前的迁移
单一的class轮从软件包pipe理器控制台中删除,创build和种子:
update-database -TargetMigration:0 | update-database -force | update-database -force
KABOOM。
怎么样 ..
static void Main(string[] args) { Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>()); // C // o // d // i // n // g }
我从编程entity framework中select了这个:Code First ,Pg 28第一版。
采取这些步骤:
- 删除那些应该从上下文中删除的对象//
Dbset<Item> Items{get;set;}
并在Nuget Console中运行这些命令 - add-migration [contextName]
- update-database -verbose
它将删除上下文中不存在但已经在数据库中创build的表
如果您按照本教程创build了数据库: https : //msdn.microsoft.com/en-au/data/jj193542.aspx
…那么这可能工作:
- 删除项目目录中的所有
.mdf
和.ldf
文件 - 转到查看/ SQL Server对象资源pipe理器,并从(localdb)\ v11.0子节点删除数据库。 另请参阅https://stackoverflow.com/a/15832184/2279059
- 如何在EF CF中设置POCO的默认值?
- 我在哪里可以find在包pipe理器窗口中执行的代码的控制台或debugging输出?
- 如何在代码优先的entity framework6.2中创build索引
- 使用graphdiff进行条件映射
- 我如何以编程方式为entity frameworkCode-First设置连接string?
- StringLength与MaxLength属性entity frameworkEF Code First的ASP.NET MVC
- 应用程序configuration文件中的连接string“MyConnection”不包含所需的providerName属性。
- 一对一使用entity framework代码的可选关系
- 代码优先与模型/数据库优先