我在实体框架V4.1中使用了代码优先模式。我遇到的其中一件看起来很奇怪的事情是,无论何时在模型中进行任何更改,数据库都会被删除并创建新的。这很不整洁,因为每次删除和重新创建数据库都不是理想的解决方案。我所有的测试数据和一切都会丢失。我知道有一个名为Seed的方法,你可以把测试数据记录插入到那里。然而,可能只有几百个测试记录,并且将每一条记录放入种子方法都是不可行的。除此之外还有其他的选择吗?我根本不会使用代码优先,但在项目中使用它是强制性的。Database.SetInitializer中的DropCreateDatabaseIfModelChanges
1
A
回答
2
不,目前没有其他方法和EF本身可能永远不会支持任何更多然后删除/重新创建。 ADO.NET团队选择的方式是使用单独的工具进行数据库升级,名称为Migrations。迁移目前仅可用于CTP =它们不适合实际使用,但可用于测试并将反馈意见反馈给EF团队。
作为一种解决方法,您可以使用外部数据填充脚本并从种子中调用它 - 这将更容易进行维护。
2
您可以将EF设置为仅尝试修改数据库,如果它尚不存在。
Database.SetInitializer<YourDataContext>(new CreateDatabaseIfNotExists<YourDataContext>());
+0
这不是我正在寻找的答案。数据库创建后,我对模型所做的更改如何?如果我使用你的方法,这些改变将不会被反映出来。 – Jaggu
相关问题
- 1. Database.SetInitializer不工作
- 2. DropCreateDatabaseIfModelChanges()不起作用
- 3. 放置Database.SetInitializer的地方
- 4. 多个DbContext,多个Database.SetInitializer
- 5. Database.SetInitializer()在静态构造函数中?
- 6. MVC4项目 - 不能DropCreateDatabaseIfModelChanges
- 7. EF CodeFirst:除了一台DropCreateDatabaseIfModelChanges
- 8. 检测如果DropCreateDatabaseIfModelChanges Ran?
- 9. 在生产环境中使用DropCreateDatabaseIfModelChanges
- 10. 来自静态构造函数的Database.SetInitializer
- 11. 什么是DropCreateDatabaseIfModelChanges(MVC3)的最佳选择?
- 12. 使用Database.SetInitializer避免猎枪手术
- 13. 如何在model-first上调用Database.SetInitializer?
- 14. 实体框架Database.SetInitializer根本不工作
- 15. 如何重写Database.SetInitializer在EF 4.1
- 16. EF代码第一DropCreateDatabaseIfModelChanges部署
- 17. 在实体框架中设置Database.SetInitializer <>的代码优先
- 18. EF 4.3中的DropCreateDatabaseIfModelChanges发生了什么变化?
- 19. EF代码优先的最小数据库权限DropCreateDatabaseIfModelChanges
- 20. DropCreateDatabaseIfModelChanges EF6导致System.InvalidOperationException:支持上下文的模型已更改
- 21. 实体框架4.1文档说Database.SetInitializer()是“get或set”?
- 22. DropCreateDatabaseIfModelChanges导致自动迁移,即使我没有启用他们
- 23. 在数据库被DropCreateDatabaseIfModelChanges删除之前进行备份
- 24. 为什么设置“DropCreateDatabaseIfModelChanges”时Entity Framework无法登录到SQL Server?
- 25. 为什么EF4.1 CodeFirst即使没有`Database.SetInitializer <>()`调用也创建数据库?
- 26. EntityFramework Db初始化
- 27. 使用“DropCreateDatabaseWhenModelChanges”错误
- 28. 当EF是另一个项目时DropCreateDatabaseIfModel更改
- 29. 在EF6中更新CodeFirst中的数据库而不删除数据
- 30. 环境已经改变,因为数据库创建
https://blogs.msdn.microsoft.com/b/adonet/archive/2011/07/27/code-first-migrations-august-2011-ctp-released.aspx找不到 – Kiquenet