我一直在玩Entity Framework 4,使用模型驱动方法从我的实体生成数据库脚本。这很好,但我不确定在版本化数据库时它是如何工作的。我猜如果我想使用一个活跃的记录类型迁移框架,我不得不以另一种方式工作,并从我的数据库中生成我的实体?有什么方法可以使用模型驱动的方法并正确地版本化数据库?实体框架的数据库迁移4
回答
这将很快作为NuGet包称为EntityFramework.Migrations
由斯科特Hanselman在2011年微软技术大会(在http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV349可在线)进行演示。相关的部分是在45分钟内
总之,一旦安装了软件包,你会进入以下到包管理器控制台生成一个数据库更改脚本:
migrate -script
UPDATE(13 -Nov-2011)
这个包的alpha 3版本现在在NuGet上可用。它不是使用上述的cmdlet migrate -script
,而是使用cmdlet Add-Migration <migrationname>
。在ADO.NET团队博客上可以找到一个walk-through of its use。
UPDATE(14-FEB-2012)
此功能是现在可作为主EntityFramework NuGet package的一部分,从版本4.3。使用EF 4.3的updated walk-through可以在ADO.NET团队博客上找到。
+1进行更新 – Karsten 2012-03-14 12:03:25
好吧,如果你想像ActiveRecord一样工作,那么你需要像ActiveRecord一样工作。 :)
但是,如果您想使用model-first但仍然使用迁移,这将是可能的,但将需要您的额外工作。 Model-first将生成一个数据库更改脚本。您必须将相关部分提取到迁移中,以及手动编写撤消脚本。虽然这涉及到一些体力劳动,但这并不会让我感到非常困难。
ScottGu提到一些有关这在blog entry:
我们还将在未来,将允许您以编程自动化/脚本数据库模式的迁移中支持与EF一个“迁移”功能。
[编辑]
我想他可能是指Entity Designer Database Generation Power Pack,由莫尔塔扎Manavi在another SO answer回答。
我正在致力于替代EF.Migrations库 - EntityFramework.SchemaCompare。它允许将数据库模式与代表数据库上下文的实体模型进行物理比较(EF.Migrations不这样做)。这可以在数据库初始化期间或根据请求手动触发。请看下面的例子
#if DEBUG
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>());
#endif
描述DB模式和模型之间的差异数据库初始化过程中它会抛出一个异常,如果不兼容的问题被发现。另外,您可以随时找到代码中的这些差异这样
using (var ctx = new DatabaseContext())
{
var issues = ctx.Database.FindCompatibilityIssues();
}
然后有在手,你可以更新数据库架构或模型的差异/不兼容的问题。
当您需要完全控制数据库模式和模型设计和/或在多个团队成员正在使用同一个数据库模式和模型的团队中工作时,此方法特别有用。它也可以用于EF.Migrations之外。
叉我在GitHub上:https://github.com/kriasoft/data
- 1. 实体框架数据库迁移
- 2. 如何重置实体框架4的数据库迁移
- 3. 实体框架迁移API
- 4. 实体框架迁移:PrimaryKey
- 5. MySQL实体框架迁移
- 6. 实体框架迁移
- 7. 实体框架代码首先迁移和数据迁移
- 8. Class Library中的C#实体框架数据库迁移
- 9. 实体框架4.3更新数据库时的迁移异常
- 10. 实体框架自动迁移现有的数据库
- 11. 迁移错误的实体框架与Oracle数据库
- 12. 实体框架4.3现有数据库的迁移问题
- 13. 传统数据库上的实体框架迁移
- 14. 使用不同数据库的实体框架迁移
- 15. 实体框架5,迁移,MVC 4,更新数据库-force - 对服务器
- 16. 实体框架数据库迁移脚本
- 17. 使用实体框架迁移数据库
- 18. 实体框架多对多数据库迁移
- 19. 使用实体框架处理数据库迁移
- 20. 实体框架5迁移:建立数据库
- 21. 实体框架核心更新 - 数据库特定迁移
- 22. 实体框架4.3数据库迁移代码第一,数据库依赖
- 23. 无法实现用于实体框架数据迁移的IDbContextFactory
- 24. 如何实现用于实体框架数据迁移的IDbContextFactory
- 25. 实体框架4.3迁移移动现有数据
- 26. 实体框架迁移器的连接
- 27. 网站实体框架迁移的ArgumentException
- 28. 使用实体框架4.3迁移而不依赖于实际的数据库
- 29. 实体框架,数据库
- 30. Symfony框架数据库迁移
微软现在此功能的实体框架积极努力,您可以在ADO.NET团队博客的代码首先迁移职位读到它。 http://blogs.msdn.com/b/adonet/ – 2011-09-22 14:15:22